我想使用Javascript检测Chrome操作系统,navigator.userAgent
为此我正在使用它。现在,我正在运行Chrome操作系统,而我的导航器userAgent是
Mozilla/5.0 (X11; CrOS armv7l 6680.78.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.102 Safari/537.36
现在。我使用正则表达式检查userAgent的样式,并在下面编写了代码。
<script>
if ( navigator.userAgent = /^Mozilla\/\d{1}^.\d{1}^(X11; CrOS i\d{3} \d{1}^.\d{2}\d{3} ^AppleWebKit\/\d{3}^.\d{2} ^(KHTML, like Gecko) Chrome\/ \d{2}^.\d{1}^.\d{3}^.\d{2} ^Safari\/\d{3}^\d{2}/ ){
console.log(navigator.userAgent);
} else {
console.log(navigator.userAgent);
}
</script>
现在,加载此脚本后,我得到一个错误。
Uncaught SyntaxError: Invalid regular expression: /^Mozilla\/\d{1}^.\d{1}^(X11; CrOS i\d{3} \d{1}^.\d{2}\d{3} ^AppleWebKit\/\d{3}^.\d{2} ^(KHTML, like Gecko) Chrome\/ \d{2}^.\d{1}^.\d{3}^.\d{2} ^Safari\/\d{3}^\d{2}/: Unterminated group
我的代码在哪里出了什么问题?
它抱怨的是您有一个(
不匹配的)
。在正则表达式,(
并)
定义捕获组,并有平衡。如果要匹配实际的(
或)
,则必须使用反斜杠将其转义。
但是还有其他几个问题。^
例如,除了表达式的开头,在任何地方(“输入开始”)都没有意义。
但我认为CrOS
用户代理中没有其他内容,因此可能很简单:
if (/\bCrOS\b/.test(navigator.userAgent)) {
// yes, it is (probably, if no one's mucked about with their user agent string)
} else {
// No, it isn't (probably, if no one's mucked about with their user agent string)
}
这些\b
是“单词边界”,因此我们不会在单词中间匹配该字符串。请注意,我将其区分大小写。
旁注:我发现https://regex101.com/#javascript(与我无关)对调试正则表达式非常有用。
旁注2:如果确实需要检测ChromeOS,则上述内容很有用,但如果只是需要检查的功能,如jfriend00所指出,功能检测可能是更好的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句