【发布时间】:2014-09-05 01:11:15
【问题描述】:
在 JS 中,如果我有这样的正则表达式:
new RegExp('^(.*?) in the year ([0-9]{1,4})$|^([0-9]{1,4}) is the year$')
那么如何确保“年份”部分始终是同一个捕获组,以便我可以像matches[2] 一样访问它?目前,如果匹配正则表达式的第一部分,则年份为matches[2],但第二部分为matches[1]。我想改为使它们相同,以便我可以始终如一地检索相同的值。
另外请记住,我仍想在开始时捕获(.*?),所以简单地删除那里的括号对我没有帮助。
【问题讨论】:
-
您是否使用其他捕获组?或者我们可以让它们成为非捕获组吗? “脏”解决方案将是以下
^(.*?) in the year ([0-9]{1,4})$|^()([0-9]{1,4}) is the year$一个更干净的解决方案是将上述解决方案分成两个正则表达式调用。
标签: javascript regex match wildcard capture