繁体   English   中英

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

[英]Regular expression for check if string has two specified words javascript

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

字符串的格式为:“ team_user_picture”(示例),其中“ user”可以是其他字符串。

我尝试了/team picture/但这不适用于我的情况。 我该如何使用正则表达式呢?

如果“团队”始终/team.*picture/ “图片”之前,则/team.*picture/将起作用。

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

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

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

 var s = 'team_user_picture'; var re = /(team.*picture)|(picture.*team)/; alert(re.test(s)); 

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

/^team_.+_picture$/

这是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))

如果您要做的只是确保两个单词都在字符串中,则正则表达式会显得过大。 只需使用contains()方法,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM