如何选择性地在Javascript正则表达式中捕获组?
我有以下两个变量:如何选择性地在Javascript正则表达式中捕获组?,javascript,regex,optional,Javascript,Regex,Optional,我有以下两个变量: var firefox = "Mozilla/5.0 (Android; Mobile; rv:32.0) Gecko/32.0 Firefox/32.0" var chrome = "Mozilla/5.0 (Linux; Android 4.4.4; Nexus 4 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.57 Mobile Safari/537.36" 我想从中了解:
var firefox = "Mozilla/5.0 (Android; Mobile; rv:32.0) Gecko/32.0 Firefox/32.0"
var chrome = "Mozilla/5.0 (Linux; Android 4.4.4; Nexus 4 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.57 Mobile Safari/537.36"
我想从中了解:
如果它存在于字符串Nexus 4中(可选)
火狐浏览器
浏览器的版本
因此,正则表达式替换后的结果字符串应为:
Firefox32.0
Nexus 4 Chrome 38.0.2125.57
到目前为止,我有一个正则表达式,如下所示:
var newf = firefox.replace(/^.*(Nexus)?.*(Firefox|Chrome)\/([\d\.]*).*/, "$1 $2 $3")
var newc = chrome.replace(/^.*(Nexus)?.*(Firefox|Chrome)\/([\d\.]*).*/, "$1 $2 $3")
您可以使用这样的正则表达式:
.*(Nexus 4).*(Chrome\S+).*|.*(Firefox\S+)
我需要为每个变量应用相同的正则表达式,并分别处理它们。@Patryk这是一样的,您可以对两个值应用相同的正则表达式,并且您将获得特定的输出。如果您将它们放在一起或分开处理,将生成相同的输出。我按照您对每个字符串的建议进行了处理。替换为您的正则表达式,我得到了2:Firefox/32.0,Nexus 4 Chrome/38.0.2125.57