JavaScript正則表達式(一)

正則表達式建立方式

兩種:java

  1. var reg = /xxxxx/
  2. var reg = new RegExp('xxxxx') 或 var reg = new RegExp(/xxxxx/)正則表達式

    JavaScript正則表達式對象內置方法

  • exec() 與字符串方法match()相似
  • test()

元字符

( [ {  ^ $ | ) ? * + .app

/[abc]/ 意思是,在一個位置能夠出現的字符可能爲a或b或c
eg:this

/[abc]/.test('a') === true

(): 容許重複多個字符(分組)
eg:code

// count字符串連續出現兩次 countcount
/(count){2}/.test('countcount') === true
// 匹配 bad 或 dad  而且每一個只能出現零次或者一次
([bd]ad?)

量詞

    • 出現0次或者屢次
  • ? 出現零次或者一次
    • 出現一次或者屢次
  • {n} 對應n次
  • {n,m} 對應n~m次
  • {n, } 至少n次

貪性量詞 惰性量詞

貪性量詞: 指上面全部的簡單量詞
特色 : 匹配時,拿到整個字符串,從後往前,不匹配的去除
eg:javascript正則

var str = 'aabbcccddaaabbbccccbbbb111'
var reg = /.*ccc/g //貪婪
console.log(reg.exec(str)) //["aabbccddaaabbbcccc", index: 0, input: "aabbccddaaabbbccccbbbb111", groups: undefined]0: "aabbccddaaabbbcccc"groups: undefinedindex: 0input: "aabbccddaaabbbccccbbbb111"length: 1__proto__: Array(0)]
console.log(str.match(reg)) //["aabbccddaaabbbcccc"]

惰性量詞: 在簡單量詞後加'?'
特色: 與貪性量詞相反,從首個字符開始匹配對象

var str = 'aabbcccddaaabbbccccbbbb111'
var reg = /.*?ccc/g;
console.log(reg.exec(str)) 
console.log(str.match(reg))
// ["aabbccc", index: 0, input: "aabbcccddaaabbbccccbbbb111", groups: undefined]
// ["aabbccc", "ddaaabbbccc"]

分組

"baddad".match(/([bd]ad?)*/)
結果:
 ["baddad", "dad", index: 0, input: "baddad", groups: undefined]

第一個參數 爲 正則匹配結果, 第二個參數 爲 分組(括號內)的表達式匹配的結果

若是不想匹配到括號內的結果, 能夠使用非捕獲性分組?:ip

"baddad".match(/(?:[bd]ad?)*/)

結果:
["baddad", index: 0, input: "baddad", groups: undefined]

候選 (管道符 | )

var reg = /this is a apple|banana|orange/
reg.test('this is a apple') === true
reg.test('this is a banana') === true
相關文章
相關標籤/搜索