我想创建一个函数,如果字符串包含以下两个单词,则返回true:" team"和"图片"。
字符串的格式为:" team_user_picture" (例子)其中"用户"可以是一个不同的字符串。
我尝试了/team picture/
,但这对我的情况不起作用。我怎么能用正则表达式做到这一点?
答案 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");
}