正则表达式摘要

前端之家收集整理的这篇文章主要介绍了正则表达式摘要前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1、贪婪模式:根据匹配字符串以及表达式尽可能多的进行匹配,成为贪婪匹配模式
例如:/a\d+/ 即可以匹配首字母为a的之后的许多数字,这个不进行限制
或者另外一种方法/a\d{2,}/也可以实现同样的方法

2、非贪婪模式:根据匹配字符串以及表达式尽可能少的进行匹配。使用的方法就是在修饰匹配次数的特殊符号后再加上一个?号进行限制 如"*?","+?","{n,}?",m}?"
如:/a\d+?/即匹配的字符串为a为首字母,后面只能有一个数字

3、复杂模式 分为分组,反向引用,候选,非捕获性分组,前瞻,边界定位符和多行模式等
1)、分组,
引入()的概念,其语法是(pattern),即将“pattern”部分组合成一个可以统一操作的组合项或子匹配,也就是说用括号括起一些字符,字符类或者量词等,每个捕获的字匹配项按照其出现的顺序存储在缓冲区中。 如:/(abc){3}/如过匹配的字符串是wcabcabcabc的话则可以匹配到的字符串是abcabcabc
2)、反向引用 分组得到的子匹配,正则表达式后面的部分,可以引用前面分组的子匹配中已经匹配到的字符串,这称之为反向引用 语法是\num,即可以引用编号为num的内容 其值是1-99的整数 如:/(\w)\2{2}/ 其中\2{2}表示子匹配 如果/\w{5}/可以匹配目标字符串中连续出现的几个字符,则可以是用/\w\1{5}/来匹配。正则表达式/<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>/就可以匹配<td id="td2" style="float:left"></td> 这里的\1就是匹配的第一个括弧中\w+的内容
3)、候选: 即用“|”来表示匹配的表达式之间的或关系,语法是表达式|表达式,两个表达式是或的关系。如匹配座机号码 有3位区号8位号码和4位区号7位号码这两类,在写正则表达式的时候就可以写/(((\d{3}\)|\d{3}-)\d{8})|(((\d{4}\)|\d{4}-)\d{7})$/即表达了两类方式如023-47854xxx或者023/47854xxx 或者0234/xxxxxxx 0234-xxxxxxx
4)、非捕获性分组:其语法是(?:pattern),将pattern部分组合成为一个可以统一进行操作的组合项,但是不把这部分内容当做子匹配捕获,这种方法必须在进行组合,但是又不想对组合的部分进行缓存的情况下使用。如找俩单词:programe和project 前面的pro都相同,则可以写成/programe|project/或者是/pro(gram|ject)/,如果进行非捕获性匹配的话就要写成/pro(?:gram|ject)/
5)、正向前瞻:语法是(?=pattern) 在目标字符串的响应位置必须要有pattern部分匹配的内容,但是不作为匹配结果处理,不会放在缓冲区中。/windows(?=xp|7)/,只能匹配windows xp和windows7,不能匹配其他的内容 xp和7不作为结果返回。
6)、负向前瞻:语法是(?!pattern) 在被搜索的字符串的相应位置不能有pattern部分表示的内容,不能将其作为结果进行处理,也不会存在缓冲区中。 如/bed(?!room)/可以匹配bed后不是room的所有字符串
7)、边界定位符:^ 与字符串开始的地方匹配,不匹配任何字符 但是如果是放在[^a-z]的时候就表示匹配除了a-z以外的字符串。$表示与字符串结束的地方匹配,也是不匹配任何的字符。\b 匹配一个单词的边界,也就是单词和空格之间的位置,不匹配任何字符 \B是\b的“非”,即是匹配一个非单词边界。

猜你在找的正则表达式相关文章