6個(gè)常用的正則表達(dá)式

本文譯自 6 JavaScript Regular Expression features you can use today

正則表達(dá)式雖然非常強(qiáng)大,但眾所周知很難掌握。這里有 6 個(gè)有用的特性,可以幫助你開(kāi)始在你的 JavaScript 項(xiàng)目中使用它們:

捕獲組

捕獲組允許您獲取匹配字符串的特定部分,只需將部分正則表達(dá)式括在括號(hào)中即可 (...)

const str = 'JavaScript is a programming language';
/(JavaScript) is a (.*)/.exec(str)
/*
  [
    0: 'JavaScript is a programming language',
    1: 'JavaScript',
    2: 'programming language'
    ...
  ]
*/

非捕獲組

非捕獲組用于匹配某些內(nèi)容而不捕獲它,例如您并不真正需要的一個(gè) / 或匹配組。它們的定義類似于捕獲組,但前綴為 ?:

const str = 'JavaScript is a programming language';
/(?:JavaScript|Python) is a (.+)/.exec(str)
/*
  [
    0: 'JavaScript is a programming language',
    1: 'programming language'
    ...
  ]
*/

命名捕獲組

命名捕獲組允許您命名捕獲組,通過(guò)在它前面加上前綴 <name>

const str = 'JavaScript is a programming language';
/(?<subject>.+) is a (?<description>.+)/.exec(str)
/*
  [
    0: 'JavaScript is a programming language',
    1: 'JavaScript',
    2: 'programming language',
    groups: {
      subject: 'JavaScript,
      description: 'programming language'
    }
    ...
  ]
*/

捕獲組反向引用

反向引用幫你寫(xiě)較短的正則表達(dá)式,通過(guò)重復(fù)現(xiàn)有的捕獲組,使用 \1,\2 等等。同樣地,你也可以重復(fù)命名捕捉使用群體 \k <name>

const str = 'JavaScript is a programming language - an awesome programming language JavaScript is';
/(.+) is a (?<description>.+) - an awesome \k<description> \1 is/.exec(str)
/*
  [
    0: 'JavaScript is a programming language - an awesome programming language JavaScript is',
    1: 'JavaScript',
    2: 'programming language',
    groups: {
      description: 'programming language'
    }
    ...
  ]
*/

前瞻

前瞻(Lookaheads)允許您檢查某些內(nèi)容是否遵循特定模式,而無(wú)需實(shí)際匹配它。您可以使用以下方法創(chuàng)建正先行斷言(?=)和負(fù)先行斷言(?!):

const str = 'JavaScript is not the same as Java and you should remember that';
/Java(?=Script)(.*)/.exec(str)
/*
  [
    0: 'JavaScript is not the same as Java and you should remember that',
    1: 'Script is not the same as Java and you should remember that'
    ...
  ]
*/

/Java(?!Script)(.*)/.exec(str)
/*
  [
    0: 'Java and you should remember that',
    1: ' and you should remember that'
    ...
  ]
*/

Unicode 字符

最后,您可以匹配 unicode 字符,使用 /p{...}/u 標(biāo)志。示例包括但不限于 {Emoji},{Math_Symbols}{Script=Greek}

const str = 'Greek looks like this: γεια';
/\p{Script=Greek}+/u.exec(str)
/*
  [
    0: 'γεια'
    ...
  ]
*/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容