正規表示式小括號的多義性

2021-09-06 14:50:41 字數 1691 閱讀 2743

小括號在正規表示式這有以下意義

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

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

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

var reg = /(matz|eich)/

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

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

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

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

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

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

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

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

var reg1 = /(\d) (\d)/

var str = '111 222'

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

var reg2 = /(\d)(\d)(\d)/

var mobile = '13522722724'

reg2.test(mobile)

regexp.$1 // => 135

regexp.$2 // => 2272

regexp.$3 // => 2724

var reg3 = /(\d)(\d)(\d)/

var mobile = '13522722724'

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

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

reg.test('13522722724')

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

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

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

var reg = /(john) (?=resig)/

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

reg.test('john backus') // => false

reg.test('john reisg') // => true

regexp.$1 // => 'john',注意這裡不是 "john resig"

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

/*

* 手機號分隔

* 13522722724 -> 135 2272 2724

*/function separatemobile(num) )(?=\d)/g,"$1 ").split('')

arr.shift()

return arr.join('')

}

小括號 中括號 大括號(正規表示式)

一 小括號 中括號 大括號的區別 1 小括號 匹配小括號內的字串,可以是乙個,也可以是多個,常跟 或 符號搭配使用,是多選結構的 示例1 string name way2014 regex way zgw result 結果是可以匹配出way的,因為是多選結構,小括號是匹配字串的 示例2 strin...

正規表示式中的小括號用法

小括號中的連續字元作為可選 nov match bnov ember b 返回true november match bnov ember b 返回true 92 01 2009description match d d 返回值為9 2 當小括號中的內容不是想捕獲的物件時,即小括號的內容不作為捕獲物...

解析Javascript中大括號「 」的多義性

js中大括號有四種語義作用 語義1,組織復合語句,這是最常見的 如下 if condition else for 語義2,物件直接量宣告 如下 var obj 整個是個賦值語句,其中的是個表示式。語義3,宣告函式或函式直接量 如下 function f1 var f2 function f1與非f2...