gpt4 book ai didi

JavaScript 正则表达式 : how to create a single matching group

转载 作者:行者123 更新时间:2023-12-03 09:41:36 24 4
gpt4 key购买 nike

场景

我正在尝试从 navigator.appVersion 属性获取操作系统详细信息。

所以我尝试了regexp.exec()方法:

/\(([a-z0-9\.]+)(?=;).*\)|\(([a-z0-9\.]+)\)/i. exec(navigator.appVersion);

以下是不同浏览器中的结果:

  • Opera、Safari、Chrome

    [“(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如 Gecko)”,“Windows NT 6.1”,未定义]

  • IE

    “[(Windows NT 6.1;WOW64;Trident/7.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;.NET4。 0C;.NET4.0E;InfoPath.3;rv:11.0)"_"Windows NT 6.1",未定义]

  • 火狐浏览器

    [“(Windows)”,未定义,“Windows”]

所以我对正则表达式的定义非常满意,匹配组正确地获取了操作系统详细信息。但是...

问题

  1. 为什么在输出数组中匹配组在不同浏览器中的位置不同?

  2. 输出数组的“未定义”元素是什么?

最佳答案

未定义的是不匹配的组。您有一个交替,每个交替都有一个捕获组。

这是您的正则表达式的详细信息。

   \(
( [a-z0-9 \.]+ ) # (1)
(?= ; )
.*
\)
|
\(
( [a-z0-9 \.]+ ) # (2)
\)

不确定您需要做什么,但您可以使用单个捕获组来处理两者

 # /\(([a-z0-9 .]+)(?:(?=;).*)?\)/i

\(
( [a-z0-9 .]+ ) # (1)
(?:
(?= ; )
.*
)?
\)

关于JavaScript 正则表达式 : how to create a single matching group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167207/

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