我正在探索在Regex中捕获群组,我对它缺乏文档感到困惑。对于前者,任何人都可以告诉我两个正则表达式之间的区别:
/(?:madhur)?/
和
/(madhur)?/
据我所知,?第二个建议在字符串中匹配madhur
零或一次。
第一个与第二个有什么不同?
答案 0 :(得分:28)
答案 1 :(得分:15)
这是最明显的例子:
"madhur".replace(/(madhur)?/, "$1 ahuja"); // returns "madhur ahuja"
"madhur".replace(/(?:madhur)?/, "$1 ahuja"); // returns "$1 ahuja"
反序列表按顺序存储,以便第一次匹配可以使用$1
调用,第二次匹配可以使用$2
,等等。如果您捕获匹配项(即(...)
而不是{{ 1}}),你可以使用这些,如果你不这样做,那就没什么特别了。作为另一个例子,请考虑以下事项:
(?:...)
答案 2 :(得分:5)
它根本不会影响匹配。
它告诉正则表达式引擎
replace()
方法存储要使用的群组内容($ 1,$ 2,...)exec()
方法和