正则表达式用于检查字符串是否有两个指定的单词javascript

时间:2015-08-17 21:14:40

标签: javascript regex

我想创建一个函数,如果字符串包含以下两个单词,则返回true:" team"和"图片"。

字符串的格式为:" team_user_picture" (例子)其中"用户"可以是一个不同的字符串。

我尝试了/team picture/,但这对我的情况不起作用。我怎么能用正则表达式做到这一点?

4 个答案:

答案 0 :(得分:2)

如果“团队”总是在“图片”之前,那么/team.*picture/将会起作用。

然后测试该正则表达式的函数将是

function hasKeywords(str) {
    return /team.*picture/.test(str);
}

答案 1 :(得分:1)

如果你想测试字符串包含两个单词,无论顺序如何:

pom.xml

如果您想要对模板进行精确验证,请使用:

var s = 'team_user_picture';

var re = /(team.*picture)|(picture.*team)/;

alert(re.test(s));

答案 2 :(得分:1)

这是indexOf的工作。 RegEx对此任务效率低下:

function hasWords(string) {
    return ~string.indexOf("picture") &&
           ~string.indexOf("team");
}

更好的功能是:

function contains(str, ar) {
    return ar.every(function(w) {
        return ~str.indexOf(w);
    });
}

现在你可以做到:

contains("team_user_picture", ["team", "picture"])

这将检查第一个字符串是否包含数组中的所有单词。

ES6:

const contains = (s, a) => a.every(w => s.includes(w))

或者:

const contains = (s, a) => a.every(w => s[
    String.prototype.contains ?
    'contains' : 'include'
](w))

答案 3 :(得分:-1)

如果您只想确保两个单词都在字符串中,那么正则表达式就会过度。只需使用这样的contains()方法:

function check(str) {
    return str.contains("team") && str.contains("picture");
}