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

144 阅读3分钟

Date: 2018-03-25

正则替换(replace)

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

str.replace(new RegExp('abc', 'gi'), 'def') // 将abc字符串全部替换从def字符串,g表示从头到尾扫描,i表示不区分替换字符串的大小写
  • 从字符串中截取数字:
str.replace(/[^0-9]/ig, '')
  • 去除所有空格
str.replace(/\s+/g, '')
  • 去掉左空格
str.replace(/^\s*/, '')
  • 去掉右空格
str.replace(/\s*$/g, '')
  • 去掉左右空格
str.replace(/(^\s*)|(\s*$)/g, '')

正则判断(test)

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

  • 首位是1且11位的手机号
/^1\d{10}$/.test(phone)  // 返回true 或 false
  • 首位是1且11位的手机号(去除空格)
/^1\d{10}$/.test(phone.replace(/(^\s*)|(\s*$)/g, ''))  // 返回true 或 false
  • 中国姓名(中文包括·或•)
/^[\u2E80-\uFE4F]+([·•][\u2E80-\uFE4F]+)*$/.test(str)  // 返回true 或 false
  • email
/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(email)    // 返回true 或 false
  • 身份证号
/^(^[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
/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i.test(url)    // 返回true 或 false
  • 邮编
/^[1-9]\d{5}(?!\d)$/.test(postcode)    // 返回true 或 false
  • 输入的为纯数字
/^\d+$/.test(number)    // 返回true 或 false
  • 输入n个纯数字
/^\d{n}$/.test(number)    // 返回true 或 false
  • 输入m到n的纯数字
/^\d{m,n}$/.test(number)    // 返回true 或 false
  • 纯英文字母
/^[a-z]+$/i.test(enCode)    // 返回true 或 false
  • 大写应为字母
/^[A-Z]+$/.test(enCode)    // 返回true 或 false
  • 英文字母或数字组成
/^[a-z0-9]+$/i.test(code)    // 返回true 或 false
  • 英文字母和数字组合,区分大小写,6~16位
/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/i.test(code)   // 返回true 或 false
  • 英文字母、数字和下划线组成
/^\w+$/.test(code)    // 返回true 或 false
  • 数字和.组成的浮点数
/^(([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浏览器
/msie (\d+\.\d+)/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为webkit内核
/webkit/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为chrome内核
/chrome\/(\d+\.\d+)/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为firefox内核
/firefox\/(\d+\.\d+)/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为safari浏览器
/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(ua)    // 返回true 或 false
  • 从UA判断是否是微信浏览器
ua.indexOf('micromessenger') > -1
  • 从UA判断是否是QQ浏览器
ua.indexOf('qq') > -1
  • 正则判断是否是微信浏览器
/(micromessenger)\//.test(ua)
  • 正则判断是否是QQ浏览器
/(qq)\//.test(ua)
  • 正则判断微信浏览器或QQ浏览器
/(micromessenger|qq)\//.test(ua)
  • 从UA判断是否为iPhone
/iphone/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为iPad
/ipad/i.test(ua)    // 返回true 或 false
  • 从UA判断是否为安卓
/android/i.test(ua)    // 返回true 或 false
  • 从UA判断安卓版本号
ua.substr(ua.indexOf('android') + 8, 3)
  • 从appVersion判断iOS版本
parseInt(((navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/))[1], 10)
  • 从UA判断是否为移动端
/(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