Regex小括弧的多義性 Regex 去掉括弧 Regex 匹配括弧 Regex 括弧配

來源:互聯網
上載者:User
小括弧在Regex這有以下意義

  • 限定量詞作用的範圍
  • 限定多選結構的範圍
  • 為反向引用捕獲文本
  • 分組捕獲
  • 只分組不捕獲
  • 前瞻

一、限定量詞作用的範圍

1

2

3

var reg1 = /(Matz)?/; // 0或1個Matz

var reg2 = /(Matz)+/; // 1個以上Matz

var reg3 = /(Matz)*/; // 0或多個Matz

二、限定多選結構的範圍

1

2

3

4

var reg = /(Matz|Eich)/

reg.test('Matz') // => true

reg.test('Eich') // => true

reg.test('John') // => false

三、為反向引用捕獲文本

1

2

3

4

5

6

var reg = /(boy)\1/ // 相當於 /boyboy/

reg.test('boy') // => false

reg.test('boyboy') // => true

var reg /(boy)(girl)\1\2/

reg.test('boygirlboygirl') // => true

四、分組捕獲

1

2

3

4

5

6

7

8

9

10

11

12

13

14

var reg1 = /(\d{3}) (\d{3})/

var str = '111 222'

str.replace(reg1, '$2 $1') // => '222 111' , 注意這裡的$2,$1,存放了匹配的字串

var reg2 = /(\d{3})(\d{4})(\d{4})/

var mobile = '13522722724'

reg2.test(mobile)

RegExp.$1 // => 135

RegExp.$2 // => 2272

RegExp.$3 // => 2724

var reg3 = /(\d{3})(\d{4})(\d{4})/

var mobile = '13522722724'

mobile.replace(reg3, '$1 $2 $3') // => '135 2272 2724'

五、只分組不捕獲(和 "?:" 一起)

1

2

3

var reg = /(?:\d+)/

reg.test('13522722724')

RegExp.$1 // => '' 不儲存匹配的元素

較長的Regex中,反向引用會降低匹配速度,效能降低,不需要反向引用時應使用分組不捕獲。

六、前瞻(lookahead,和 "?=" 一起)

它告訴Regex向前看一些字元但不移動位置,前瞻不匹配任何字元只匹配文本中的特定位置。

1

2

3

4

5

var reg = /(John) (?=Resig)/

reg.test('John') // => false

reg.test('John Backus') // => false

reg.test('John Reisg') // => true

RegExp.$1 // => 'John',注意這裡不是 "John Resig"

如下是一個利用前瞻實現手機號格式化的小函數

1

2

3

4

5

6

7

8

9

/*

* 手機號分隔

* 13522722724 -> 135 2272 2724

*/

function separateMobile(num) {

var arr = ( '0' + num ).replace(/(\d{4})(?=\d)/g,"$1 ").split('')

arr.shift()

return arr.join('')

}

以上就介紹了Regex小括弧的多義性,包括了Regex,小括弧方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.