正則建立的兩種方式:
1.字面量var pattern=//; 一般都用字面量方法,簡單直接;
2. 建構函式var pattern=new regexp();裡面可接受兩個引數,第乙個是將要匹配的字元,第二是修飾符i;優勢:可以用變數動態新增引數
i:不區分大小寫,
g全域性匹配,
m多行匹配
\n表示換行,多行匹配必須有乙個全域性匹配,沒有m,只有g,系統則不會看見換行,只有一行
pattern.test(str); 返回true/false,是否含有匹配的值
patter.exec(str) 將匹配的值,放入陣列並返回,沒找到返回null
非全域性匹配下,exec()始終匹配第乙個
全域性匹配下,exec()也只是匹配乙個,多次執行exec()會依次匹配項對應的值,直到null停止,再執行exec()又會從頭執行
str.replace(pattern,替換的**)
特殊點1:用$1來代替分組的內容,可在替換中設定css樣式
特殊點2: 不管有沒有分組,$0就表示pattern裡的內容,匿名函式的返回值就是替換的文字,也有兩個引數function(all,letter){},all表示str的內容,letter表示匹配到的值
str.match(pattern); 不過找到乙個或多個正規表示式的匹配時,會一次性返回乙個陣列
str.search(pattern); 僅僅只是返回匹配到的第乙個下標,與是否有全域性匹配無關,不存在返回-1
str.split(pattern); 將字串轉化為陣列
1 . 匹配除了 \n \r \u2028或\u2029 以外所有的字元
2 * 0個或多個 + 至少1個 ?0個或1個
3 轉義字元:反斜槓\
將特殊含義轉化為字面量含義;
4 ^開頭 $結尾
5 字元集合,'或者'的含義 ; [^]取反
6 邊界符: \b 非 \w(字母或數字或下劃線)都被稱為邊界
7 分組 () ;
(?:)表示非捕獲分組,不再單獨匹配分組;
\1 \2
8 選擇:| 也可以叫'或'
9 零寬斷言:正向(後面) 負向(前面)
/[a-z]/;在a~z的範圍內匹配
/[\u4e00-\u9fa5]/;中文漢字匹配
/[a-za-z]/;同時在a~z大小寫中匹配
/[a-za-z0-9]/; 可組合
常用字元類簡寫:
\d匹配數字,相當於 /0-9/
\d匹配非數字,相當於/^0-9/
\w匹配字母或數字或下劃線,不能匹配漢字,漢字:[\u4e00-\u9fa5]
\w匹配任意不是字母、數字、漢字或下劃線的字元
\s匹配任意的空白符,如空格、換行符、製表符等
\s匹配任意不是空白符的字元
.(號)
匹配除了換行符以外的任意字元,大概就是匹配任意字元
匹配方括號中的第乙個字元
[^]匹配非方括號中的所有字元的第乙個
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...