[JS] 正則表達式(Regular Expression, regex)
'str'.match(/[0-9]+/); // 1 次以上的數字,等同於 "\d"
'str'.match(/[A-Za-z]+/); // 1 次以上的英文字
'str'.match(/[A-Za-z0-9_]+/); // 1 次以上的英數字含底線,等同於 "\w"
'str'.match(/.+/); // 1 次以上的任意字元
* 表示前一個字元可以是 0 個或多個,例如 /ab*c/,因此 ac, abc, abbbbc 都符合規則。
+ 表示前一個字元可以是 1 個或多個,例如 /a+b/ ,ab, aaaaab 都符合規則。
? 表示前一個字元可以是 0 個或 1 個
^ 匹配輸入的開頭,例如 /^a/ , a dog 會符合,但 cats 中的 a 不會。
$ 匹配輸入的結尾,例如 /t$/,eat 會符合,但 eaten 中的 t 不會。
. 用來表示任意字元
regex = \$(?!\{) // 使用 negative lookahead (?!ABC) 找出所有 $ 但不是 ${ 的字
參考資料
- 👍 Regular expressions @ JavaScript.info
- Regular Expression @ MDN - JavaScript Guides
- Regular Expression @ MDN - Reference
- I hate regex: 可以找到許多常用的 regex 範例
- 常用正規表達式
建立正規式
正則表達式的規則稱作 pattern。在 JavaScript 中可以透過 Regular expression literals 的方式或建構式的方式來建立 regular expressions pattern:
Regular expression literals
/**
* Regular expression literals: script 載入時即編譯
* 當 pattern 不會改變時,使用此方式定義 pattern 效能較好。
**/
var re = /ab+c/;
Function Constructor
/**
* Function constructor for RegExp object: 程式執行過程才會被編譯
* 效能較差,適合用在 regular expression pattern 可能會改變時使用
**/
var re = new RegExp('ab+c');
var myRe = new RegExp('d(b+)d', 'g');