小括號在正規表示式這有以下意義
- 限定量詞作用的範圍
- 限定多選結構的範圍
- 為反向引用捕獲文字
- 分組捕獲
一、限定量詞作用的範圍-
-
1
23
3
|
= /(Matz)?/;
//
0或1個Matzvar
reg2
= /(Matz)+/;
//
1個以上Matzvar
reg3
= /(Matz)*/;
//
0或多個Matzvar
|
二、限定多選結構的範圍
reg
= /(Matz|Eich)/
reg.test('Matz') //
=> true |
var reg.test( 'Eich'
) reg.test( 'Matz' ) //
=> true
reg.test( 'Eich' ) reg.test( 'John'
) reg.test( 'John' ) //
=> false
|
三、為反向引用擷取文字
6
reg
= /(boy)1/ //
相當於 /boyboy/
reg.test( |
'boy' var ) //
=> false
reg.test(reg.test( 'boy' ) 'boyboy' ) reg.test( 'boyboy' ) //
=> true
var reg
/(boy)(girl)12/
reg.test(reg.test( 'boygirlboygirl' ) 'boygirlboygirl' ) | //
=> true
四、分組捕捉
1535%
6
7
8
9 10
11
12
13
14
| reg1
= /(d{3}) (d{3})/
var str
=
'111
222'var
str.replace(reg1, '$2
$1'str.replace(reg1, ) //
=> '222 111' , 注意這裡的$2,$1,存放了相符的字串)
reg2
= /(d{3})(d{4})(d{4})/var
mobile
= var '13522722724' '13522722724'
reg2.test(mobile)
RegExp. reg2.test(mobile)
RegExp. RegExp.$1 ///RegExp. RegExp.$1 ///
=> 135
var RegExp.$2 //
=> 2272var RegExp.$3 '13522722724'
mobile.replace(reg3, //
=> 2724 ) reg3
= /(d{3})(d{4})(d{4})/ |
mobile
= '13522722724'
mobile.replace(reg3, '$1
$2 $3'
)
//
=> '135 2272 2724'
|
var
五、只分組不捕獲(和"?:" 一起) reg.test( '13522722724' )
RegExp.
reg
= /(?:d+)/ |
reg.test('13522722724'
)
RegExp.$1)
/
=> '' 不儲存符合的元素
較長的正則表達式中,反向引用會降低匹配速度,效能降低,不需要反向引用時應使用分組不捕獲。
| 六、前瞻(lookahead,和 "?=" 一起)
它告訴正規表示式向前看一些字元但不移動位置,前瞻不匹配任何字元只匹配文字中的特定位置。 var
reg.test( 'John' ) 1 2reg.test( 3 4) 5
= /(John) (?=Resig)/reg.test(
) reg.test( 'John'
) RegExp. //
=> false
| reg.test(
'John
Backus'
🎜) 🎜🎜//
=> false🎜🎜🎜🎜reg.test(🎜🎜'John
Reisg'🎜🎜) 🎜🎜//
=> true🎜🎜🎜🎜RegExp.$1 🎜🎜//
=> 'John',注意這裡不是 "John Resig"🎜🎜🎜🎜🎜🎜🎜
如下是利用前瞻實現手機號碼格式化的小函數
1
2
3 9
/*
*
手機號碼分隔 |
/*
*
13522722724 -> 135 2272 2724
*/ */
function function separate()
{ var
'0' var arr
= ( ).split( '' )
arr.shift()
return arr.join( '' )
} '0' | +
num ).replace(/(d{4})(?=d)/g,
"$1
"
).split(
''
)
🎜🎜🎜 🎜🎜arr.shift()🎜. 🎜🎜''🎜🎜)🎜🎜🎜🎜} 🎜🎜🎜🎜🎜🎜🎜🎜🎜
🎜
以上就介紹了正規表示式小括號的多義性,包括了正規表示式,小括號方面的內容,希望對PHP教學有興趣的朋友有所幫助。 🎜
🎜
🎜