继续前一篇的正则表达之复杂模式
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 .;
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选项.
第六个和第七个不是很了解......