在JavaScript中匹配两个具有相同单词的字符串
给定两个字符串,如果两个字符串有一个共同的单词,我怎么做 例如:在JavaScript中匹配两个具有相同单词的字符串,javascript,match,Javascript,Match,给定两个字符串,如果两个字符串有一个共同的单词,我怎么做 例如:“foo bar”和“foo line”都有“foo”这个词。字符串可以是3个或更多的单词,比如“foo bar”和“blue foo line” 到目前为止,我所尝试的: var m = "foo bar"; var n = "foo line"; if(m.match(/n/g)){ alert("match"); } 更好的版本: var m = "foo bar".split(' '); var n = "foo
“foo bar”
和“foo line”
都有“foo”
这个词。字符串可以是3个或更多的单词,比如“foo bar”
和“blue foo line”
到目前为止,我所尝试的:
var m = "foo bar";
var n = "foo line";
if(m.match(/n/g)){
alert("match");
}
更好的版本:
var m = "foo bar".split(' ');
var n = "foo line".split(' ');
var isOk=0;
for (var i=0;i<m.length;i++)
{
for (var j=0;j<n.length;j++)
{
var reg = new RegExp("^"+m[i]+"$", "gi");
if (n[j].match(reg) )
{isOk=1;break;}
}
}
if (isOk==1)
alert("match");
var m=“foo bar.”拆分(“”);
var n=“foo line”。拆分(“”);
var-isOk=0;
对于(var i=0;i,这里有一个更明确的版本,没有不需要的正则表达式:
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
函数hasWordMatch(a、b,区分大小写){
if(区分大小写!==true){
a=a.toLowerCase();
b=b.toLowerCase();
}
var a_parts=a.split(“”);
var b_parts=b.分割(“”);
var a_length=a_parts.length;
var b_length=b_parts.length;
变量i_a,i_b;
对于(i_a=0;i_a
您问题中的正则表达式区分大小写,但此版本默认情况下不区分大小写。通过将true
作为第三个参数传递,可以使其区分大小写
它也出现在JSFIDLE上:我对你的提问感到困惑。还有什么其他条件适用?例如,该算法应该区分大小写吗?它应该只在一个(且不超过一个)单词相同时匹配吗?非常感谢。一个问题,var m=“bar.split(“”);
,var n=“foo line.split(“”);
,也匹配。请注意空格。