正则表达式

  1. 校验方式

regex.test(value)
  1. 写法

var regex1 = /foo*/ // 字面量写法
var regex2 = new RegExp('foo*'); //构造函数模式
  1. 规则

a)\d+ 匹配数字

b)匹配单词

\bhi\b 不可以有边界,精确

\Bhi\B 可以有边界,模糊查询

c)匹配数字

\d123\d 匹配数字c

\Dhi\D 匹配非数字

d)匹配字母\数字\下划线

\w123\w 匹配123abc_

\W@\W 匹配@#$%

e)开头和结尾

^hi 必须以他开头

hi$ 必须以他结尾

f)匹配指定一堆字符的一个

^[a-z]+$ 小写

^[A-Z]+$ 大写

^[A-Za-z]+$ 大小写

^[A-Za-z0-9]+$ 大小写加数字

^[aeiou]at$ 匹配字符中的任意一个

^[^xyz]at$ [^] 不匹配这个集合中的任何一个字符

g) +重复符号(1次或者n次)

^go+gle$ gogle google goooooooogle

^g[aeiou]+gle$

h) *重复符号(0次或者n次)

^go*gle$ ggle google goooooooogle

i) ?重复符号(0次或者1次)

^go?gle$ ggle gogle

j) {x,y}重复符号(x次到y次)

^go{2,4}gle$ google gooogle goooogle

{x,}重复符号(至少x次)

^go{2,}gle$ google gooogle goooooooooogle

k) ()指定一堆字符匹配 0次或者多次

^(very)*large$

l) || 或,指定几个规则只要匹配一个规则就完成匹配

^abc.(com|org|net)$

m) \转义符号 匹配[^+)等有特殊含义符号,\转义

^1\*\(2\+3\)=6$ 1*(2+3)=6

4.常用查询

^[a-z]+$ 小写

^[A-Z]+$ 大写

^[A-Za-z]+$ 大小写

^[A-Za-z0-9]+$ 大小写加数字

[\u4e00-\u9fa5] 汉字

^[A-Za-z0-9]\w{5,17}$

^(13[0-9]|14[5|7]|15[0-9])\d{8}$

5.应用

a)模糊查询

 regUserName(targetStr: string, inputStr: string) {

    if (!inputStr) {
      return true;
    } else {
      // let regStr = ['', ...targetStr, ''].join('.*');
      let regStr = `\S*${inputStr}\S*`
      let reg = new RegExp(regStr);
      return reg.test(targetStr);
    }
  }

b)常用封装方法

手机号:

export function validatorPhone(value: string) {
  if (value === '' || !value) {
      throw new Error('请输入手机号');
  } else if (!/^[1][3,4,5,7,8,9][0-9]{9}$/.test(value)) {
      throw new Error('请输入正确的手机号');
  }
}

身份证号:

function validatorIdentity(value: string) {
  if (value === '' || !value) {
      throw new Error('请输入身份证号');
  } else if (!/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/.test(value)) {
      throw new Error('请输入正确身份证号');
  }
}

c)千分位分割符号(正则)

function format_with_regex(number) {
var reg = /\d{1,3}(?=(\d{3})+$)/g;
return (number + '').replace(reg, '$&,');
}

function format_with_regex(number) {
var reg = /(\d)(?=(?:\d{3})+$)/g
return (number + '').replace(reg, '$1,');
}

你可能感兴趣的:(前端小乐,正则表达式)