正则表达之复杂模式2
2014-08-15来源:易贤网

继续前一篇的正则表达之复杂模式

4.非捕获性分组

上次说道反向引用分组,我们称其为捕获性分组.还有一种是非捕获性分组,就是不存储分组结果,这样运算起来很快.非捕获性分组在左(前面一个)括号的后面加上?:即可.

举例说明

第一个是捕获性分组

var foraspcn_str = "#abcd";

var re = /#(\w{2})/g;

re.test(foraspcn_str);

alert(RegExp.$1);返回ab

比较非捕获性分组

var foraspcn_str = "#abcd";

var re = /#(?:\w{2})/g;

re.test(foraspcn_str);

alert(RegExp.$1);则返回空.

5前瞻,分为正向前瞻和负向前瞻

前瞻,当某个特定的字符分组出现在另一个字符串之前,才去捕获它.

正向其中南站模式是放在(?=和)之间,正像前瞻检查的是接下来出现的是不是某个特定的字符集.

举例:

var str1 = "badroom";

var str2 = "badding";

var re = /(bad(?=room))/g;

alert(re.test(str1));//输出ture

alert(RegExp.$1);//输出bad

alert(re.test(str2));//输出false

负向前瞻是检查不应该出现的特定字符串,是将模式放在(?!和)之间.

var str1 = "badroom";

var str2 = "badding";

var re = /(bad(?=room))/g;

alert(re.test(str1));//输出false

alert(re.test(str2));//输出ture

alert(RegExp.$1);//输出bad

6边界用于正则表达式中标识模式的位置

边界表

边界 描述

^    行开头

$    行结尾

\b   单词的边界

\B   非单词的边界

举例:

var str = "this site is http://www.ynpxrz.com.";

var re1 = /(\w+)\.$/;

var re2 = /^(\w+)/;

var re3 = /^(.+?)\b/;

var re4 = /\b(\S+?)\b/;

re1.test(str);

alert(RegExp.$1);//输出cn

re2.test(str);

alert(RegExp.$1);//输出this

var array1 = re3.match(str);

var array2 = re4.match(str);

7.多行模式,急当字符串中有换行符\n,只要在表达式后面加上一个m选项.

第六个和第七个不是很了解......

更多信息请查看IT技术专栏

推荐信息