Heim > Backend-Entwicklung > PHP-Tutorial > 正则表达式小括号的多义性 正则表达式 去掉括号 正则表达式 匹配括号 正则表达式 括号配

正则表达式小括号的多义性 正则表达式 去掉括号 正则表达式 匹配括号 正则表达式 括号配

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-07-29 08:48:35
Original
1372 Leute haben es durchsucht

小括号在正则表达式这有以下意义

  • 限定量词作用的范围
  • 限定多选结构的范围
  • 为反向引用捕获文本
  • 分组捕获
  • 只分组不捕获
  • 前瞻

一、限定量词作用的范围

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 // => '' 不存储匹配的元素

较长的正则表达式中,反向引用会降低匹配速度,性能降低,不需要反向引用时应使用分组不捕获。

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

它告诉正则表达式向前看一些字符但不移动位置,前瞻不匹配任何字符只匹配文本中的特定位置。

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('')

}

以上就介绍了正则表达式小括号的多义性,包括了正则表达式,小括号方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage