Tom*_*ssi -1 javascript regex jquery coffeescript
我将使用coffeescript/javascript/jquery,如果字符串包含我的所有子字符串,我需要返回true.
所以,我们可以说我有一系列子串'my','dog','spot'.如果我的字符串'成长,我的宠物狗被命名为现场',我需要返回一个真实的.但如果字符串是'我有一只叫做斑点的狗',我需要返回false.
我想有一种方法可以用正则表达式做到这一点,但似乎无法弄明白?
小智 6
var mystring = "growing up my pet dog was named spot";
var words = ['my', 'dog', 'spot'];
var res = words.every(function(word) {
return mystring.indexOf(word) !== -1;
});
Run Code Online (Sandbox Code Playgroud)
如果要在应用程序的各个部分重用该函数,请为其命名,并将要搜索的字符串作为第二个参数提供,这使其成为this值.
function hasWordInString(word) {
return this.indexOf(word) !== -1;
}
Run Code Online (Sandbox Code Playgroud)
var res = words.every(hasWordInString, mystring);
Run Code Online (Sandbox Code Playgroud)
另一个好处.every()是它false会返回短路,所以一旦找到一个不匹配的单词,搜索就会停止,这会使它更有效率.
强制全字匹配
如果你想确保匹配的字符串是一个完整的单词以避免"dog"匹配"dogma",你需要使用RegExp字边界:
function hasWordInString(word) {
return this.match(new RegExp("\\b"+word+"\\b"))!=null;
}
var res = words.every(hasWordInString,mystring);
Run Code Online (Sandbox Code Playgroud)