使用字面量形式
var patt = /正規表示式/修飾符;
var patt = /a/gi;
使用new關鍵字宣告; 引數都是字串
var patt = new regexp(正規表示式, 修飾符)
引數解析:
兩種宣告方式的區別
正則的組成: 正規表示式由 元字元,字元類,量詞組成元字元
^ : 以什麼作為開頭
$ : 以什麼作為結束
. : 除空白符以外的任意乙個字元
: 匹配在範圍內任意乙個字元
[^] : 除了範圍內的任意乙個字元
字元類[a-z] : 匹配小寫字母 a 到 z
[a-z] :匹配大寫字母 a 到 z
[0-9] : 匹配的是數字
\w : 匹配 下劃線, 小寫字母 a 到 z,大寫字母 a 到 z;數字0-9; 等價形式[a-za-z0-9_]
\w :匹配的是 除了上邊以外的所有字元; 等價形式[^a-za-z0-9_]
\d : 匹配的是數字 ,等價形式 [0-9]
\d : 匹配的是除了數字以外的字元
\s : 匹配的是空白符
\s : 匹配除了空白符以外的字元 量詞
*: 匹配0次或者多次
+:匹配1次或者多次
?: 匹配0次或者1次
: 匹配n次
: 至少匹配n次, 最多沒限制
: 至少匹配n次,最多匹配m次
匹配模式
貪婪模式 : 盡可能多的匹配 ; + *
惰性模式 : 盡可能少的匹配 ; +? *? ? ?
候選 |
var patt = /red|blue/;
分組 ()var patt = /(kid)/ // kid 作為整體進行匹配三次
var patt = /kid/ // d匹配三次
反向引用 ()
反向引用引用的是匹配的結果,不是匹配規則
// var res = /(['"])[^\1]*\1/.test('\"tom\"');
var res = /(['"])[^\1]*\1/.test('\"tom\'');
console.log(res)
注意:反向引用 $1 或者是 \1 :數字是左括號的順序
var str = "todayhelloworldtom";
var patt = /(today)(hello(world(tom)))/g;
var res = patt.test(str);
var val1 = regexp.$1; // todayhelloworldtom
var val2 = regexp.$2 // helloworldtom
var val3 = regexp.$3 // worldtom
var val4 = regexp.$4 // tom
console.log(val1, val2, val3, val4)
只分組,不引用 ?:
有時只需要分組,不需要進行反向引用,使用(?:)可以解決
var patt = /(hello(?:world))/;
正向前瞻 和 負向前瞻
正向前瞻 exp1(?=exp2) :exp1表示式的後邊只能是exp2代表的表示式才能匹配成功
var patt = /hello(?=wolrd)/;
負向前瞻 exp1(?!exp2) : exp1表示式的後邊只要不是exp2代表的表示式就匹配成功
var patt = /hello(?!wolrd)/;
match(patt) : 找到乙個或者多個匹配; 結果是乙個陣列,如果沒有使用全域性匹配修飾符g, 結果只有乙個, 找到的是第乙個匹配的值; 如果使用的g, 則結果有多個
var str = '123542435346467333';
// var res = str.match(/\d?/g);
var res = str.match(/\d?/);
console.log(res)
// 沒有使用修飾符g:
["123", index: 0, input: "123542435346467333", groups: undefined]
0: "123"
groups: undefined
index: 0
input: "123542435346467333"
length: 1
__proto__: array(0)
// 使用修飾符 g
["123", "542", "435", "346", "467", "333"]
repalce(patt, newstr) : 替換於正則表達匹配的字串
search(patt) : 檢索是否存在和正規表示式匹配的字元; 存在的返回值為第一次匹配位置的索引值; 如果不存在,返回值為 -1 ; 不能識別全域性修飾符 g; 但是可以識別修飾符 i;
test() : 判斷字串是否符合正則規則, 結果是布林值, true: 符合規則, false: 不符合規則
exec() : 檢索字串中是否存在符合正則規則的子串,結果是陣列, 每執行一次exec()方法,都會得到乙個結果; 因為rexexp物件的 lastindex 屬性 記錄每一次匹配位置的索引值; 下次匹配從lastindex記錄的位置開始
因此,檢索所有的結果, 需要借助迴圈
var str = '12342354324534456345';
var patt = /\d/g;
var res ;
while(res = patt.exec(str))
正規表示式基礎知識
我們先從簡單的開始。假設你要搜尋乙個包含字元 cat 的字串,搜尋用的正規表示式就是 cat 如果搜尋對大小寫不敏感,單詞 catalog catherine sophisticated 都可以匹配。也就是說 1.1 句點符號 假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以 t ...
正規表示式基礎知識
乙個正規表示式就是由普通字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式。該模式描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。如 jscript vbscript 匹配 t t 匹配乙個空白行。d d d d 驗證乙個i...
正規表示式基礎知識
正規表示式基礎知識 正規表示式是一種可以用於模式匹配和替換的強有力的工具,乙個正規表示式就是由普通的字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式,它描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。正規表示式在字元資料處...