Javascript Ellegant在数组中查找正则表达式

Javascript Ellegant在数组中查找正则表达式,javascript,regex,underscore.js,Javascript,Regex,Underscore.js,如果检测到几个浏览器中的一个,我想启动一个脚本。我创建了一个常规数组,我想检查navigator.userAgent字符串中是否存在其中一个。我想用下划线来表示,而不是用下划线来表示 var browsers = [/chrome/, /opera/]; /* something like: */ if (!_.contains(browsers, navigator.userAgent.toLowerCase()) return; 更好的解决方案是只使用一个正则表达式,这样就不必迭代。使用

如果检测到几个浏览器中的一个,我想启动一个脚本。我创建了一个常规数组,我想检查navigator.userAgent字符串中是否存在其中一个。我想用下划线来表示,而不是用下划线来表示

var browsers = [/chrome/, /opera/];
/* something like: */ 
if (!_.contains(browsers, navigator.userAgent.toLowerCase()) return;

更好的解决方案是只使用一个正则表达式,这样就不必迭代。使用
i
标志可以避免使用
toLowerCase

if (!/chrome|opera/i.test(navigator.userAgent)) return;

更好的解决方案是只使用一个正则表达式,这样就不必迭代。使用
i
标志可以避免使用
toLowerCase

if (!/chrome|opera/i.test(navigator.userAgent)) return;
使用
.some()

但是,我建议使用。它更快,代码更短

你可以这样做:

var arr = ["chrome", "opera"]; // Strings, not regexes.
var regexp = new RegExp(arr.join('|'), 'i');
if (!regexp.test(navigator.userAgent)) return;
或者,作为一个班轮:

if (!RegExp(["chrome", "opera"].join('|'), 'i').test(navigator.userAgent)) return;
使用
.some()

但是,我建议使用。它更快,代码更短

你可以这样做:

var arr = ["chrome", "opera"]; // Strings, not regexes.
var regexp = new RegExp(arr.join('|'), 'i');
if (!regexp.test(navigator.userAgent)) return;
或者,作为一个班轮:

if (!RegExp(["chrome", "opera"].join('|'), 'i').test(navigator.userAgent)) return;

你知道下划线只是在所有元素中循环使用类似于for,对吧?我当然知道。我只是想让我的代码更漂亮。在这种情况下,如果您想使用下划线,您需要查找。然而,dystroy的答案要好得多(更快、更干净、更短…)。请写一个例子。我的一些例子。你知道下划线只是在所有元素中循环使用类似于的,对吧?当然,我知道。我只是想让我的代码更漂亮。在这种情况下,如果您想使用下划线,您需要查找。然而,dystroy的答案要好得多(更快、更干净、更短……)。请写一个例子来说明这一点。我的一些例子。很好的解决方案。但我需要使用数组,它来自数据库。那么,如何在代码中实现数组呢?if(!/+arr.join(“|”)+/i.test(navigator.userAgent))返回;如果您有一个数组,请使用ux。正如Cerburs所说,不要费心构建复合正则表达式。但是,至少可以说,将其存入数据库是非常可疑的。应用程序的设计看起来不正确。这是一个很好的解决方案。但我需要使用数组,它来自数据库。那么,如何在代码中实现数组呢?if(!/+arr.join(“|”)+/i.test(navigator.userAgent))返回;如果您有一个数组,请使用ux。正如Cerburs所说,不要费心构建复合正则表达式。但是,至少可以说,将其存入数据库是非常可疑的。应用程序的设计看起来不正确。