は、ここで不要な正規表現せずに、より明示的なバージョンです:
function hasWordMatch(a, b, case_sensitive) {
if (case_sensitive !== true) {
a = a.toLowerCase();
b = b.toLowerCase();
}
var a_parts = a.split(' ');
var b_parts = b.split(' ');
var a_length = a_parts.length;
var b_length = b_parts.length;
var i_a, i_b;
for (i_a = 0; i_a < a_length; i_a += 1) {
for (i_b = 0; i_b < b_length; i_b += 1) {
if (a_parts[i_a] === b_parts[i_b]) {
return true;
}
}
}
return false;
}
console.log(hasWordMatch("foo bar", "foo baz")); // true
console.log(hasWordMatch("foo bar", "bada bing")); // false
console.log(hasWordMatch("FOO BAR", "foo baz")); // true
console.log(hasWordMatch("FOO BAR", "foo baz", true)); // false
私がこれまで試したどのような
あなたの質問の正規表現は大文字と小文字を区別しますが、このバージョンではデフォルトで大文字と小文字が区別されません。第3引数としてtrue
を渡すことで大文字小文字を区別することができます。
それはアップJSFiddleでもあります:http://jsfiddle.net/WQBSv/
アムは、あなたが求めてかについて混乱。 –
その他の条件は適用されますか?たとえば、アルゴリズムは大文字と小文字を区別する必要がありますか? ** 1 **(と複数の単語)の単語が同じ場合にのみ一致するはずですか? – PPvG