创建正则表达式
第一种使用正则表达式字面量。
|
|
第二种调用RegExp构造函数。
调用RegExp对象的方法,参数只支持字符串。在ES6版本开始支持字面量和变量当参数。
正则表达式的元字符
常见的元字符
‘^’ 匹配开始位置。
匹配字符开始位置
如果多行标示被设置为true,同时匹配换行后紧跟的字符。
字符出现在一个字符集合模式的第一个字符的时候. 表示匹配非字符集合里边的字符。
‘$’ 匹配字符串结尾位置
|
|
‘/^xxx$/‘ 准确匹配 例如校验手机号 邮箱 身份证号 密码格式 …
|
|
‘\w’ 匹配字母或数字或下划线或汉字
|
|
‘\’ 转义符
/b/匹配字符串b,/\b/ 反斜杠通常在正则里边是转义,把字符转移成特殊意义的字符。意思是匹配一个字符边界。 比如:/\bs/ 其实就是匹配字符串是以空格s’ s’开始的字符串。
‘*’ 特殊字符转义为普通字符
相反\ 也会把特殊字符转移成普通字符串 例如: 代表着前一项匹配0次或者多次的特殊字符,/a/ 匹配最少一个a或者多个连续’aaa’,而a/*就只能匹配字符串a*
‘\’ 本身用在字符串里边是也需要转义
例如:你相匹配字符串’a\b’
重复
* 重复零次或更多次
|
|
+ 重复一次或更多次
|
|
? 重复零次或一次
|
|
{n} 重复n次
|
|
{n,} 重复n次或更多次
|
|
{n,m} 重复n到m次
|
|
反义
\W 匹配任意不是字母,数字,下划线,汉字的字符
|
|
\S 匹配任意不是空白符的字符
|
|
\D 匹配任意非数字的字符
|
|
\B 匹配不是单词开头或结束的位置
|
|
[^x] 匹配除了x以外的任意字符
|
|
//example
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
|
|
替换 和 ‘|’
不知道为什么叫替换 我感觉就是用’或’来匹配的
例如匹配 电话号码(座机)’规则前边3位区号后边八位数字|前边四位数字区号后边7位数字 前边区号首数字为0 后边数字第一位不为零‘,正则表达式里的替换指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。
|
|
分组
上边介绍了单个字符重复匹配 a* 类似这个。重复一个字符串又该怎么办?当!当!当!看这里! 你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作
//ip地址匹配 规则四组数字每组1-3个数字 每一组数字用.隔开 每组数字不能大于255
(2[0-4]\d|25[0-5]|[01]?\d\d?) 重要的是看明白这个正则, 2[0-4]\d 第一位2开始第二位0-4第三位\d 25[0-5] 如果前两位是25第三位0-5 才能保证不会大于255 [01]?\d\d? 如果第一位0或者1可有可无 第二位\d 第三位\d可有可无
再没看明白给我十块钱我再给你唠一遍 重申一遍别忘了写^$
反向引用
反向引用的作用通常是用来查找或限定重复、查找或限定指定标识配对出现等等。 反向引用必须要和捕获组一同使用
反向引用“\1”的限制,要求必须是两个相同的字符
example:
\1{x} {x} 匹配的个数是x+1;
|
|
复杂一点的
|
|
千分符
|
|
\B 匹配不是开始或者结尾的位置
?=exp 匹配 exp前面的位置
|
|
(?:exp) 分组不捕获
|
|
其他 ?…
|
|
贪婪与懒惰
最后聊一下正则的贪婪和懒惰。
|
|
懒惰
有时候我们需要匹配尽量少的字符 我们就聊一下懒惰 贼简单。
聊到现在正则也聊差不多了。当然这只是我了解的一丢丢东西 如有其它正则需求请留言。一块学习学习。我有什么新学到的东西也会及时更新上来 谢谢关注!