正则表达式
- 非贪婪模式
- 子模式
- 对子模式进行分组
- 先行断言
- 负向先行断言
- 匹配重复数字
- 匹配连续数字
非贪懒模式
在待匹配字符后加问号:”*?”,”??”,”+?”,”{1,3}?”;实现尽可能少的匹配。
子模式
利用带圆括号的表达式实现子模式,通过字符”"后加一位或多位数字来实现,数字代表前面的子表达式的表达式中的位置。
01 Sep 2016
可以用”(?:”和”)”来分组
<script>
/(java(?:script))\sis\s(fun\w*)/这里的子表达式(?:script)仅仅用于分组,但不生成引用,这里\2引用了与(fun\w*)匹配的文本。
</script>
先行断言
如果在符号”(?=”和”)”之间加入的表达式就是先行断言
<script>
/javascript(?=\:)/ 这个表达式可以匹配"javascript:the Definitive Guide" 中的"javascript" ,但不能匹配javascript in a but shell 中的javascript,以为他后面没有冒号。
</script>
负向先行断言
如果在符号”(?!”和”)”之间加入的表达式就是负向先行断言
<script>
/java(?!script)([A-Z\w*])/ 这个表达式可以匹配"javaDefinitive",但不能匹配javadefinitive 。
</script>
匹配重复数字
<script type="text/javascript">
var reText = "22222",
reText1 = "aaaa";
/^(\w)\1{4,13}$/.test(reText) //true
/^(\w)\1{4,13}$/.test(reText1) //true
</script>
匹配字符串中的重复字母或数字
<script type="text/javascript">
var reText = "22222",
reText1 = "aaaa";
/^(\w)*(\d)\2{2}(\w)*$/.test(reText) //true 匹配重复大于3位及以上
/^(\w)*(a-Z)\2{2}(\w)*$/.test(reText1) //true
</script>
匹配连续数字
<script type="text/javascript">
var reText = "12345",
reText1 = "876543";
/^(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0))+\d$/.test(reText) //true
/^(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)|0(?=0))+\d$/.test(reText1) //true
</script>
参考文件
| 本文访问量: 次