我正在寻找一个JS正则表达式来匹配完整的单词,但是如果有任何不同的单词(任何失败),则根本不匹配。
例如:匹配cat dog cat
dog
->一切都匹配。好吧。
dog
-> cat
被匹配,即使此处dog cata
不存在。好吧。
dog
-> cata
被匹配, $order = Input::get('order');
$menu = Input::get('menu_id');
$var = DB::table('submenu')
->select('order','menu_id')
->where('order',$order)
->where('menu_id',$menu)
->first();
if(!empty($var)){
//Do Something for Duplicate Entry
} else {
//Do Something for Unique Entry;
}
不匹配。我根本不想要任何比赛。
答案 0 :(得分:0)
^(?:(?=.*\bdog\b)(?=.*\bcat\b).*|cat|dog)$
是您想要的吗?
说明:
^ : beginning of the string
(?: : start non capture group
(?=.*\bdog\b) : positive lookahead, zero-length assertion, make sure we have dog somewhere in the string
(?=.*\bcat\b) : positive lookahead, zero-length assertion, make sure we have cat somewhere in the string
.* : 0 or more any character
| : OR
cat : cat alone
| : OR
dog : dog alone
) : end group
$ : end of string
var test = [
'dog cat',
'cat dog',
'dog',
'cat',
'dog cata',
'cat fish',
];
console.log(test.map(function (a) {
return a + ' ==> ' + a.match(/^(?:(?=.*\bdog\b)(?=.*\bcat\b).*|cat|dog)$/);
}));
答案 1 :(得分:0)
因此,基本上,您想检查字符串中的所有单词是否与regex
匹配,或者所有字符串都应来自字符串列表,不是吗?让我们拆分所有单词,然后检查所有单词是否都属于您的字符串列表。
var reg = /dog|cat|rat/,
input1 = "dog cat rat",
input2 = "dog cata rat",
input3 = "abcd efgh",
isMatched = s => !(s.match(/\S+/g) || []).some(e => !(new RegExp(e).test(reg)));
console.log(isMatched(input1));
console.log(isMatched(input2));
console.log(isMatched(input3));