js正则表达式

1:字符串中不准输入'<','>'字符

functionChkStr(obj)

{

varreg=/^[^<>]+$/;

if(!obj.value)return;

if(!reg.test(obj.value))

confirm("请勿输入'<','>字符"),obj.focus();

}

2:\b用于匹配一个单词边界,也就是单词和空格之间的位置。

"\b"与"^"和"$"类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是"\w"范围,另一边是非"\w"的范围。

表达式"\bend\b"在匹配"weekend,endfor,end"时,匹配结果是:成功;匹配到的内容是:"end"。

3:|左右两边表达式之间"或"关系,匹配左边或者右边

()(1).在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰

(2).取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

4:匹配时贪婪模式:

在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}","{m,}","?","*","+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本"dxxxdxxxd",举例如下:

(d)(\w+)"\w+"将匹配第一个"d"之后的所有字符"xxxdxxxd"

由此可见,"\w+"在匹配的时候,总是尽可能多的匹配符合它规则的字符。同理,带"*"和"{m,n}"的表达式都是尽可能地多匹配,带"?"的表达式在可匹配可不匹配的时候,也是尽可能的"要匹配"。这种匹配原则就叫作"贪婪"模式。

5:非贪婪模式:

在修饰匹配次数的特殊符号后再加上一个"?"号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的"不匹配"。这种匹配原则叫作"非贪婪"模式,也叫作"勉强"模式。如果少匹配就会导致整个表达式匹配失败的时候,与贪婪模式类似,非贪婪模式会最小限度的再匹配一些,以使整个表达式匹配成功。举例如下,针对文本"dxxxdxxxd"举例:

(d)(\w+?)"\w+?"将尽可能少的匹配第一个"d"之后的字符,结果是:"\w+?"只匹配了一个"x"

举例1:表达式"<td>(.*)</td>"与字符串"<td><p>aa</p></td><td><p>bb</p></td>"匹配时,匹配的结果是:成功;匹配到的内容是"<td><p>aa</p></td><td><p>bb</p></td>"整个字符串,表达式中的"</td>"将与字符串中最后一个"</td>"匹配。

举例2:相比之下,表达式"<td>(.*?)</td>"匹配举例1中同样的字符串时,将只得到"<td><p>aa</p></td>",再次匹配下一个时,可以得到第二个"<td><p>bb</p></td>"。

6:反向引用

正则表达式:([ab])\1:对于正则表达式“([ab])\1”,捕获组中的子表达式“[ab]”虽然可以匹配“a”或者“b”,但是捕获组一旦匹配成功,反向引用的内容也就确定了。如果捕获组匹配到“a”,那么反向引用也就只能匹配“a”,同理,如果捕获组匹配到的是“b”,那么反向引用也就只能匹配“b”。由于后面反向引用“\1”的限制,要求必须是两个相同的字符,在这里也就是“aa”或者“bb”才能匹配成功。

相关推荐