今天就来屡屡js正则的那些事吧
正则对象的定义
- 构造函数方式
- 第一个参数是正则的内容,第二个参数是修饰符(i,g,m),其中i表示忽略大小写,g表示全部匹配,m表示多行匹配
let reg = new RegExp(pattern, flags) // 第一个参数是字符串
- 字面量方式
- 两个斜杠之间是定义正则内容的,最后一个斜杠之后是修饰符
let reg = /pattern/flags // pattern是字面量
- 画重点,构造函数的字符串元字符需要转义,但是字面量的字符不需要转义
- /[bc]at/(字面量) == "\[bc\]at"(字符串)
- /name/age/(字面量) == "name\/age"(字符串)
正则实例对象的属性
- global,布尔类型,表示正则表达式是否全局匹配,g
- ignoreCase,布尔类型,表示正则表达式是否忽略大小写,i
- multiline,布尔类型,表示正则表达式是否多匹配,m
- lastIndex,整数,表示开始搜索的位置,从0算起
- source,正则表达式的字符串表示
正则实例对象的方法
- exec(),接受一个参数,应用模式的字符串,然后返回包含第一个匹配信息的数组(在没有匹配的情况下返回null)
- 代码
let text = "mom and dad and baby"
let pattern = /mom( and dad( and baby)?)?/gi
let match = pattern.exec(text)
console.log(match)
-
match信息
match打印信息.png - 分析
match数组中第一项:匹配整个字符串
第二项:包含与第一个捕获组匹配的内容
第三项:包含与第二个捕获组匹配的内容
index:因为第一项是从一个字符开始匹配的,所以index为0
input:正则应用的字符串
- test(),接受一个字符串参数,返回ture或者false
let text = "000-00-0000"
var pattern = /\d{3}-\d{2}-\d{4}/
console.log(pattern.test(text)) // true
- 除了正则对象的一些方法,字符串的一些方法参数中也可以使用正则表达式,
string类型的search()、match()、split()、replace()等方法传入的参数也可以是正则,详情请见js中string类型基本用法
常用的正则匹配
- 整数或者小数:
^[0-9]+\.{0,1}[0-9]{0,2}$
- 只能输入数字:
^[0-9]*$
- 只能输入n位的数字:
^\d{n}$
- 只能输入至少n位的数字:
^\d{n,}$
- 只能输入m~n位的数字:
^\d{m,n}$
- 只能输入有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
- 只能输入有1~3位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$
- 只能输入非零的正整数:
^\+?[1-9][0-9]*$
- 只能输入非零的负整数:
^\-[1-9][]0-9*$
- 只能输入长度为3的字符:
^.{3}$
- 只能输入由26个英文字母组成的字符串:
^[A-Za-z]+$
- 只能输入由26个大写英文字母组成的字符串:
^[A-Z]+$
- 只能输入由26个小写英文字母组成的字符串:
^[a-z]+$
- 只能输入由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
- 只能输入由数字、26个英文字母或者下划线组成的字符串:
^\w+$
- 只能输入汉字:
^[\u4e00-\u9fa5]{0,}$
- 验证Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
- 验证InternetURL:
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
- 验证电话号码:
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
正确格式为:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 - 验证身份证号(15位或18位数字):
^\d{15}|\d{18}$
感谢您的view,留个赞再走呗
- 感谢浏览姑娘的文章,来自一个写前端的姑娘!
网友评论