兩種:java
var reg = new RegExp('xxxxx') 或 var reg = new RegExp(/xxxxx/)正則表達式
( [ { ^ $ | ) ? * + .app
/[abc]/ 意思是,在一個位置能夠出現的字符可能爲a或b或c
eg:this
/[abc]/.test('a') === true
(): 容許重複多個字符(分組)
eg:code
// count字符串連續出現兩次 countcount /(count){2}/.test('countcount') === true // 匹配 bad 或 dad 而且每一個只能出現零次或者一次 ([bd]ad?)
貪性量詞: 指上面全部的簡單量詞
特色 : 匹配時,拿到整個字符串,從後往前,不匹配的去除
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