常见正则表达式及获取某些字段的方法

正则替换(replace)

注:常规replace方法只会替换一次,需使用正则才能全部替换

1
str.replace(new RegExp('abc', 'gi'), 'def') // 将abc字符串全部替换从def字符串,g表示从头到尾扫描,i表示不区分替换字符串的大小写

  • 从字符串中截取数字:

    1
    str.replace(/[^0-9]/ig, '')
  • 去除所有空格

    1
    str.replace(/\s+/g, '')
  • 去掉左空格

    1
    str.replace(/^\s*/, '')
  • 去掉右空格

    1
    str.replace(/\s*$/g, '')
  • 去掉左右空格

    1
    str.replace(/(^\s*)|(\s*$)/g, '')

正则判断(test)

说明:对于正则判断手机号,有很多通过号段来判断,个人认为这样不是很严谨,号段可能会增加,所以只需判断首位为1且11位即可

  • 首位是1且11位的手机号

    1
    /^1\d{10}$/.test(phone)  // 返回true 或 false
  • 首位是1且11位的手机号(去除空格)

    1
    /^1\d{10}$/.test(phone.replace(/(^\s*)|(\s*$)/g, ''))  // 返回true 或 false
  • 中国姓名(中文包括·或•)

    1
    /^[\u2E80-\uFE4F]+([·•][\u2E80-\uFE4F]+)*$/.test(str)  // 返回true 或 false
  • email

    1
    /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(email)    // 返回true 或 false
  • 身份证号

    1
    /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(id)    // 返回true 或 false
  • URL

    1
    /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i.test(url)    // 返回true 或 false
  • 邮编

    1
    /^[1-9]\d{5}(?!\d)$/.test(postcode)    // 返回true 或 false
  • 输入的为纯数字

    1
    /^\d+$/.test(number)    // 返回true 或 false
  • 输入n个纯数字

    1
    /^\d{n}$/.test(number)    // 返回true 或 false
  • 输入m到n的纯数字

    1
    /^\d{m,n}$/.test(number)    // 返回true 或 false
  • 纯英文字母

    1
    /^[a-z]+$/i.test(enCode)    // 返回true 或 false
  • 大写应为字母

    1
    /^[A-Z]+$/.test(enCode)    // 返回true 或 false
  • 英文字母或数字组成

    1
    /^[a-z0-9]+$/i.test(code)    // 返回true 或 false
  • 英文字母和数字组合,区分大小写,6~16位

    1
    /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/i.test(code)   // 返回true 或 false
  • 英文字母、数字和下划线组成

    1
    /^\w+$/.test(code)    // 返回true 或 false
  • 数字和.组成的浮点数

    1
    /^(([1-9][0-9]*\.[0-9][0-9]*)|([0]\.[0-9][0-9]*)|([1-9][0-9]*)|([0]{1}))$/.test(str)

    可用来检测金额,只能包含数字和.,且不能是00.123这种格式

  • 从UA判断是否为IE浏览器

    1
    /msie (\d+\.\d+)/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为webkit内核

    1
    /webkit/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为chrome内核

    1
    /chrome\/(\d+\.\d+)/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为firefox内核

    1
    /firefox\/(\d+\.\d+)/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为safari浏览器

    1
    /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(ua)    // 返回true 或 false
  • 从UA判断是否是微信浏览器

    1
    ua.indexOf('micromessenger') > -1
  • 从UA判断是否是QQ浏览器

    1
    ua.indexOf('qq') > -1
  • 正则判断是否是微信浏览器

    1
    /(micromessenger)\//.test(ua)
  • 正则判断是否是QQ浏览器

    1
    /(qq)\//.test(ua)
  • 正则判断微信浏览器或QQ浏览器

    1
    /(micromessenger|qq)\//.test(ua)
  • 从UA判断是否为iPhone

    1
    /iphone/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为iPad

    1
    /ipad/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为安卓

    1
    /android/i.test(ua)    // 返回true 或 false
  • 从UA判断安卓版本号

    1
    ua.substr(ua.indexOf('android') + 8, 3)
  • 从appVersion判断iOS版本

    1
    parseInt(((navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/))[1], 10)
  • 从UA判断是否为移动端

    1
    /(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i