正则表达式

非贪懒模式

在待匹配字符后加问号:”*?”,”??”,”+?”,”{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>

参考文件

| 本文访问量:

上一篇 markdown学习笔记(二) 下一篇 你好,世界