我正在探索在Regex中捕获组,我对它缺乏文档感到困惑.对于前者,任何人都可以告诉我两个正则表达式之间的区别:
/(?:madhur)?/
Run Code Online (Sandbox Code Playgroud)
和
/(madhur)?/
Run Code Online (Sandbox Code Playgroud)
按照我的意见,?在第二个建议madhur在字符串中匹配零或一次.
第一个与第二个有什么不同?
bry*_*mck 15
这是最明显的例子:
"madhur".replace(/(madhur)?/, "$1 ahuja"); // returns "madhur ahuja"
"madhur".replace(/(?:madhur)?/, "$1 ahuja"); // returns "$1 ahuja"
Run Code Online (Sandbox Code Playgroud)
反向引用按顺序存储,以便可以调用第一个匹配$1,第二$2个匹配,等等.如果您捕获匹配(即(...)代替(?:...)),您可以使用这些,如果不这样,则没有什么特别之处.作为另一个例子,请考虑以下事项:
/(mad)hur/.exec("madhur"); // returns an array ["madhur", "mad"]
/(?:mad)hur/.exec("madhur"); // returns an array ["madhur"]
Run Code Online (Sandbox Code Playgroud)
它根本不影响匹配.
它告诉正则表达式引擎
replace()方法存储要使用的组内容(如$ 1,$ 2,...)exec()的方法和| 归档时间: |
|
| 查看次数: |
46154 次 |
| 最近记录: |