JS正則表示式(火星文)
阿新 • • 發佈:2018-12-18
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>正則表示式(火星文)</title> </head> <body> <input type="text" id="myText" placeholder="你要發言的內容"> <button onclick="send()">傳送訊息</button> <textarea id="myArea" cols="30" rows="10"></textarea> <script> // 正則表示式: // 它是一個功能非常非常非常非常非常強大的字串匹配功能 // 有了它你就可以指定自己的規則, 然後去判斷某個字串是否符合你的規則(比如驗證郵箱, 賬號, 密碼, 電話, 身份證號 等格式) function send(){ var str = document.getElementById("myText").value; var reg = /[中國共產黨政府習近平]/g; // 字串match方法, 裡面傳入一個正則表示式, 得到正則匹配出來的結果, 結果是一個數組 // var resultStr = str.match(reg); // 字串replace方法, 第一個引數不光可以引數一個固定字元, 還可以傳入正則表示式來匹配, 字串裡的內容 var resultStr = str.replace(reg, "*"); document.getElementById("myArea").value = resultStr; } // 正則表示式 符號的意義 /* * [] 匹配裡面任意一個字元 * [1234567890] [0-9] [\d] * [abc] [a-z] * - 代表一個範圍 * 字元都是用ASCII碼來尋找的 * */ var str2 = "12345abc67"; var reg2 = /[A-z]/g; console.log(str2.match(reg2)); // \ 斜槓的意義 (轉義) var str3 = "我是/haha"; var reg3 = /\//g; console.log(str3.match(reg3)); // ^ 房子蓋 匹配 以。。。開頭 var str4 = "a201541030209"; var reg4 = /^[a-z]/g; // 以a-z任意一個字元作為整個字串的開頭 console.log(str4.match(reg4)); // $ 以。。。結束 var str5 = "小花好好學習8"; var reg5 = /[0-9]$/g; console.log(str5.match(reg5)); // .點 代表匹配 任意一個字元(佔位符) 除了\n以外 // * 代表匹配 前面的表示式 1次 或 多次 // 練習:要求匹配以abc任意一個開頭,並且 XYZ任意一個結尾的正則表示式 var str6 = "c大大很棒棒Z"; var reg6 = /^[abc].*[XYZ]$/g; console.log(str6.match(reg6)); // {n} 代表匹配 前面表示式 n次 // {n, m} 代表匹配前面表示式 最少n次 最多m次 // {n, } 代表匹配前面表示式 最少n次 // { , m} 代表匹配前面表示式 最多m次 var str7 = "acd12535"; var reg7 = /^[a-z]{3}/g; // 匹配a-z開頭字元3次 (因為有^ 必須是開頭連續3個如果被打斷, 則獲取不到) var reg7_1 = /^[a-z]{1,3}/g; // 比如以字元開頭,至少1次最多3次匹配 console.log(str7.match(reg7_1)); // 例:判斷使用者輸入的是否是電話號碼 var str8 = "13040507890"; var reg8 = /^1[345678][\d]{9}$/; console.log(str8.match(reg8)); // 判斷郵箱格式 是否正確 var str9 = "
[email protected]"; var reg9 = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/; console.log(str9.match(reg9)); // 判斷身份證格式是否正確 var str10 = "21100919811130213131"; var reg10 = /^\d{15}$|^\d{18}$|^\d{17}(\d|x|X)$/g; console.log(str10.match(reg10)); var str11 = "<html><head><title>我是title</title></head><body>" + "<ul><li>1</li><li>2</li><li>3</li><li>4</li></ul></body></html>"; var reg11 = /<li>(\d)??<\/li>/g; console.log(str11.match(reg11)); </script> </body> </html>
. 任何字元
a? a一次或一次也沒有
a* a零次或多次
a+ a一次或多次
a{n}? a恰好 n 次
a{n,}? a至少n次
a{n,m}? a至少n次,但是不超過m次
[abc] a、b 或 c(簡單類)
[^abc] 任何字元,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
^ 行的開頭
$ 行的結尾
\b 單詞邊界
\B 非單詞邊界
\A 輸入的開頭
\G 上一個匹配的結尾
\Z 輸入的結尾,僅用於最後的結束符(如果有的話)
\z 輸入的結尾