如何在JavaScript正则表达式中创建可选的非捕获组?
/foo (bar )?bam/ // this does not work for me...
我想要匹配
foo bar bam
和
foo bam
答案 0 :(得分:3)
在(?:...)
:
foo (?:bar )?bam
^^
请参阅regex demo
请注意,非捕获组仍然消耗字符,因此与非捕获组匹配的子字符串仍然是匹配的一部分。
段:
var res = 'foo bar bam\nfoo bam'.match(/foo (?:bar )?bam/g);
document.write(JSON.stringify(res));