繼續(xù)前一篇的正則表達之復雜模式
4.非捕獲性分組
上次說道反向引用分組,我們稱其為捕獲性分組.還有一種是非捕獲性分組,就是不存儲分組結(jié)果,這樣運算起來很快.非捕獲性分組在左(前面一個)括號的后面加上?:即可.
舉例說明
第一個是捕獲性分組
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前瞻,分為正向前瞻和負向前瞻
前瞻,當某個特定的字符分組出現(xiàn)在另一個字符串之前,才去捕獲它.
正向其中南站模式是放在(?=和)之間,正像前瞻檢查的是接下來出現(xiàn)的是不是某個特定的字符集.
舉例:
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
負向前瞻是檢查不應(yīng)該出現(xiàn)的特定字符串,是將模式放在(?!和)之間.
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邊界用于正則表達式中標識模式的位置
邊界表
邊界 描述
^ 行開頭
$ 行結(jié)尾
\b 單詞的邊界
\b 非單詞的邊界
舉例:
var str = this site is http://bhx05.cn.;
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選項.
第六個和第七個不是很了解......