gpt4 book ai didi

javascript - 这个正则表达式部分添加了什么?

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:02 25 4
gpt4 key购买 nike

我在 jQuery 源代码中遇到了这个正则表达式:

...
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
...

我想知道为什么它相当复杂。我对第二部分背后的原因特别感兴趣:

(?:.*? rv:([\w.]+))?

我做了一些研究,但我无法弄清楚这部分正则表达式添加了什么。

(?:)      to match but not capture
.*? any amount of any character
rv: something literal
([\w.]+) one or more word characters or a dot
? appear 0 or 1 time

特别是最后一个 ? 对我来说意义不大。如果存在或不存在由第二部分定义的子字符串,则整个第二部分匹配。通过一些试验和错误,正则表达式似乎与以下内容没有区别:

/(mozilla)/

有人可以阐明正则表达式的第二部分应该做什么吗?它限制了什么;什么字符串通过 /(mozilla)/ 或相反的方式失败?

最佳答案

这两个正则表达式会匹配相同的字符串,但会在它们的捕获组中存储不同的信息。

对于字符串:mozilla asdf rv:sadf

/(mozilla)(?:.*? rv:([\w.]+))?/
$0 = 'mozilla asdf rv:sadf'
$1 = 'mozilla'
$2 = 'sadf'

/(mozilla)/
$0 = 'mozilla'
$1 = 'mozilla'
$2 = ''

关于javascript - 这个正则表达式部分添加了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com