Regexp

有時會看到/<%([\s\S]+?)%>/g;

大寫S http://www.w3schools.com/jsref/jsref_regexp_whitespace_non.asp

小寫S http://www.w3schools.com/jsref/jsref_regexp_whitespace.asp

搜尋中文與英文字母

var re = /\w+|[\u0800-\u9fa5]+/g

變數加上表達式

const findPropsReg = new RegExp(`${fileName}.propTypes(.|\n)+.+`, 'g')

直接寫表達式即可 不用 \

Match所有字元包含換行

如果單純用g,則是會match後繼續往下找,但假設match後要用表達式找下一行則要用如下\n

(.|\n)+

Match 直到某個字

(.|\n)+?(?=到某個字)

exec vs match

  1. 用Match 的話就會幫你找出所有匹配的部分並回傳 array,如果用 exec就算加上 g還是要放在loop內

  2. exec 如果regexp內有 () 的話 裡面匹配的部分會另外顯示在回傳值第二個參數

var myArray = /d(b+)d/g.exec('cdbbdbsbz'); 
// similar to "cdbbdbsbz".match(/d(b+)d/g); however,
    // the latter outputs Array [ "dbbd" ], while 
    // /d(b+)d/g.exec('cdbbdbsbz') outputs Array [ "dbbd", "bb" ].

Invalid regular expression: /({/: Unterminated group

當我們使用 ({ 之類必須要用 \ 跳脫

但 new Regexp 如果第一個參數是 string 要用兩個 \

"ddf vd ({ dd })".match(new RegExp(/\(\{/, 'g'))
// ["({"]

以及

"ddf vd ({ dd })".match(new RegExp("\\(\\{", 'g'))

Last updated