javascript - 将正则表达式与项数组匹配

use*_*341 41 javascript arrays expression

在JavaScript中是否有一种方法可以获得字符串与正则表达式数组匹配的布尔值?

例子是('if'语句代表我想要实现的目标):

var thisExpressions = [ '/something/', '/something_else/', '/and_something_else/'];
var thisString = 'else';

if (matchInArray(thisString, thisExpressions)) {

} 
Run Code Online (Sandbox Code Playgroud)

and*_*rsh 62

使用更实用的方法,您可以使用数组函数实现与单行的匹配:

ECMAScript 6:

const regexList = [/apple/, /pear/];
const text = "banana pear";
const isMatch = regexList.some(rx => rx.test(text));
Run Code Online (Sandbox Code Playgroud)

ECMAScript 5:

var regexList = [/apple/, /pear/];
var text = "banana pear";
var isMatch = regexList.some(function(rx) { return rx.test(text); });
Run Code Online (Sandbox Code Playgroud)

  • 另外值得一提的是`Array`s的`filter`方法,它通常很有用,并且以相同的方式使用。 (2认同)
  • 另外,如果您希望它匹配数组中的所有内容,请检查“.every”,如果它与数组中的任何内容匹配,请检查“.some”,后者返回 true。 (2认同)

Gil*_*esC 18

http://jsfiddle.net/9nyhh/1/

var thisExpressions = [/something/, /something_else/, /and_something_else/];
var thisExpressions2 = [/else/, /something_else/, /and_something_else/];
var thisString = 'else';

function matchInArray(string, expressions) {

    var len = expressions.length,
        i = 0;

    for (; i < len; i++) {
        if (string.match(expressions[i])) {
            return true;
        }
    }

    return false;

};

setTimeout(function() {
    console.log(matchInArray(thisString, thisExpressions));
    console.log(matchInArray(thisString, thisExpressions2));
}, 200)?
Run Code Online (Sandbox Code Playgroud)

  • 为什么不完全去掉 res 变量,在 if 语句中返回 true 并在最后返回 false 。然后它将在找到第一个匹配项时退出。 (2认同)
  • 尽管此代码可以回答问题,但提供有关_为什么_和/或_如何_回答问题的附加上下文将显着提高其长期价值。请[编辑]您的答案以添加一些解释。 (2认同)

Lik*_*d_T 5

您可以使用.test()在找到您在另一个字符串中查找的内容时返回一个布尔值:

var thisExpressions = [ '/something/', '/something_else/', '/and_something_else/'];
var thisString = new RegExp('\\b' + 'else' + '\\b', 'i');
var FoundIt = thisString.test(thisExpressions);  
if (FoundIt) { /* DO STUFF */ }
Run Code Online (Sandbox Code Playgroud)