这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战
也叫规则表达式,按照一定的规则组成的一个表达式,这个表达式的作用主要是匹配字符串的,在大多数变成语言中都可以使用,正则表达式的组成:由元字符或者限定符组成的一个式子
语法
元字符:
- .表示出来\n以外的任意一个字符
- []表示范围
- [0-9] 表示0到9之间的任意一个数字
- [a-z]表示所有小写字母中的任意一个
- [A-Z]表示所有大写字母中的任意一个
- [a-zA-Z]表示所有字母中的任意一个
- []或者表示把正则表达式中的元字符的意义干掉,[.]就是一个.
- | 或者
- [0-9]|[a-z]表示要么是一个数字,要么是一个小写的字母
- ()表示分组,提升优先级
限定符:
- * 表示前面的表达式出现0到多次
- + 表示前面的表达式出现1到多次
- ?表示的是前面的表达式出现0到1次,最少是0次,最多是1次,另一个含义:阻止贪婪模式
- {} 更加明确前面表达式出现的次数
- 表示前面的表达式出现0次到多次,和*一样
- {1,}表示前面的表达式出现1到多次,和+一样
- {0,1}表示前面的表达式出现0到1次,和?一样
- {5,10}表示前面的表达式出现5到10次
- {4}表示前面的表达式出现4次
- ^表示以什么开始,或者是取非(取反)
- ^[0-9]以数字开始
- [^0-9]取反,非数字
- ^[a-z]以小写字母开始
- [^a-z]取反,非小写字母
- $表示以什么结束
- ^[0-9][a-z]$ 相当于严格模式
- \d 数字中的任意一个
- \D非数字中的一个
- \s空白符中的一个
- \S非空白符中的一个
- \w 非特殊符号
- \W特殊符号 _下划线不是特使字符
- \b单词的边界
例子
- 邮箱正则表达式
-
[0-9a-zA-Z.-]+[@][0-9a-zA-Z.-]+([.][a-zA-Z]+){1,2}
-
- 中文正则表达式
-
[\u4e00-\u9fa5] 代表中文一个字 [一-龥] 一对应的u4e00 通过escape方法能看到汉字的编码,通过unescape可以解码
正则表达式中:g表示全局模式匹配 正则表达式中:i表示的是忽略大小写
-
使用
创建正则表达式对象:
1)通过构造函数创建 var reg=new RegExp(/^\d{1,6}/; //在js中,正则表达式用//包围
对象创建完毕,调用test方法验证字符串是否匹配
正则表达式的各种方法
str.match(reg); 提取字符串中符合正则表达式的字符串,返回数组
console.log(RegExp.$3);提取第几组,和上面的match配合使用
str.replace(reg,str);将字符串中符合正则表达式的字符串替换成其他字符串