正規可以常常用在處理字串,驗證資料,也可以處理 HTML 節點、CSS 選擇器、判斷元素類別。而且是可以跨語言跟環境使用的重要技術。
function isThisAZipCode(candidate) {
return /^\d{5}-\d{4}$/.test(candidate)
}
//寫一堆的判斷式,不如一行正則表達式
function isThisAZipCode(candidate) {
if (typeof candidate !== "string" || candidate.length != 10) return false;
for (var n = 0; n < candidate.length; n++) {
var c = candidate[n];
switch(n) {
case 0: case 1: case 2: case 3: case 4:
case 6: case 7: case 8: case 9:
if (c < '0' || c > '9') return false;
break;
case 5:
if (c != '-') return false;
break;
}
}
return true;
}
var re1 = /test/i;
var re2 = new RexExp("test", "i");
re1.test("test")
re2.test("Test test")
//i: 不區分大小雪
'TeST test'.match(/test/i); //TeST
'TeST test'.match(/test/); //test
//g: 比對所有符合的例子
'TeST test'.match(/test/ig); //TeST, test
//m: 可跨多行比對
//試了幾種多行的方式,不用加 m 屬性也可以比對到
const multiLine = `Say hello to
multi-line
strings!`;
multiLine.match(/strings/ig); //strings
完全符合
/test/
比對字元族
[abc] abc
[^abc] //除了 abc 以外
跳脫
/\[\]/
開頭與結尾
/^test$/
重複出現
/te?st/
/te*st/
預先定義的字元族
/\d/ // [0-9]
/\S/ //除了空白之外所有字元
群組
/(ab)+/
多重選項
/(ab)+|(cd)+/
回朔參照
/<(\w+)>(.+)<\/\1>/
///<(\w+)>(.+)<\/\1>/.test('<String>aaa</String>') // true
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Regular_Expressions
https://linux.vbird.org/linux_basic/centos7/0330regularex.php