现在的位置: 首页 > 综合 > 正文

JS中正则几个概念问题

2013年09月02日 ⁄ 综合 ⁄ 共 900字 ⁄ 字号 评论关闭

正向预查:

 

先上一个全地球通用的实例:

 

>>> "windows98".match(/windows(?=98|2000)/)

[
"windows"
]

     个人认为他是来匹配windows右面

是不是98或者2000的,记住是右边,我试了几个例子,貌似这个东西还不能单独使用((?=pantiner),如果单独一个这个,如果有这个单词就会出现空格,莫有就会null),只能结合左边来验证右边是否是我需要去匹配的。我们只要记住这个/str(?=pantiner)/的意思是判断str的右边是否是pantiner是就匹配,但括号里的东西不能作为外面的$1-$N使用,却可以作为里面的/1-/N使用。只有这个?=才会去判断右边(不管所写在左边还是右边,都会结合左边去判断是否右边有pantiner,如果(?=pantiner)左边没有东西就会默认以为左边是空来去匹配,如果有这个pantiner就是返回[""]否则为null),其他都没有这个方向感。

 

 

负向预查

 

 

>>> "windows 98".match(/windows (?!2004)/)

[
"windows "
]

     这个就很随意,这个的意思就是说来判断非pantiner,方向取决于所写,不绝对。和?=的联系是都不存储结果。他和正向预查的还有个相同点,就是pantner不会返回。

 

 

非获取匹配

 

>>> "windows 98".match(/windows (?:98)/)

[
"windows 98"
]

 

    正如其名,他不会去存储结构,和?=有点形似的是他们都是去扑捉是pantiner的,他没有方向感和?!一样写到左边就是判断左边,写到右边就判断右边。

 

 

在正则里面我们通常用/1-/n来获取和括号内的值一样的匹配,包括我们上面的各种捕获。

而在正则外面我们用$1-$n来获取正则的匹配情况,这里不包括我们上面的各种捕获,值得注意的是每次我们的test,match,exec等正则的匹配都会改变RegExp的值。

EX:

 

>>> /(/d+)>/.exec("1>") RegExp.$1
"1"
>>> /(/d+)>/.exec("2>") RegExp.$1
"2"

抱歉!评论已关闭.