有人知道为什么这在javascript中不起作用吗?(使用Chrome和Firefox尝试):
console.log('"my name is"'.match(/"?(.*?)"?/));
输出此:
[""", "", index: 0, input: ""my name is""]
我期望这样:
[""my name is"", "my name is", index: 0, input: ""my name is""]
我对解决该问题的替代方法不感兴趣,而且对于我要实现的目标而言,它也不是一个完整的解决方案(我现在采用了稍微不同的方式)-我只是对比赛失败的原因感兴趣。
我希望勉强的量词能够匹配所有内容,但不包括最终报价。我不明白为什么表达式无法匹配任何内容?
问题在于,模式中的所有内容(包括周围的引号)都是可选的。这意味着它将很容易匹配一个空字符串。那么正则表达式引擎内部发生了什么?
"?
。没问题,它与"
字符串中的第一个匹配。.*?
。好吧,第一个之后的零长度子字符串"
与此匹配,因此它继续。"?
。下一个字符是m
,所以不匹配,但这没关系,因为最后一个"
是可选的,因此不会被捕获。因此,第一场比赛只是第一场比赛"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句