Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中匹配两个具有相同单词的字符串_Javascript_Match - Fatal编程技术网

在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(“”);
,也匹配。请注意空格。