Javascript 检查一个输入中的单词是否存在于另一个输入中

Javascript 检查一个输入中的单词是否存在于另一个输入中,javascript,jquery,Javascript,Jquery,我有一个小问题,当我想检查一个输入中的单词是否存在于另一个输入中 第一个输入只能包含一个单词。当我键入一个单词,然后点击空格时,脚本应该检查该单词是否已经存在于第二次输入中。 它工作正常,除非我使用+-符号 如果第二个输入中存在c++,而我在第一个输入中键入c,然后点击空格,则表明单词已经存在,这是不正确的 我试着在网上搜索一个解决方案,我发现了一些关于regEx和escaping的东西,但它似乎仍然不起作用 这是我迄今为止尝试过的: $word = $('input.word').val();

我有一个小问题,当我想检查一个输入中的单词是否存在于另一个输入中

第一个输入只能包含一个单词。当我键入一个单词,然后点击空格时,脚本应该检查该单词是否已经存在于第二次输入中。 它工作正常,除非我使用
+
-符号

如果第二个输入中存在
c++
,而我在第一个输入中键入
c
,然后点击空格,则表明单词已经存在,这是不正确的

我试着在网上搜索一个解决方案,我发现了一些关于
regEx
escaping
的东西,但它似乎仍然不起作用

这是我迄今为止尝试过的:

$word = $('input.word').val();
$check_here = $('input.check-here').val();

function escapeRegExp(string) {
    $regex = '\\b';
    $regex += string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
    $regex += '\\b';
    $result = new RegExp($regex, "g");
    return $result;
}

if ( escapeRegExp( $word ).test( $check_here ) ) {
    alert("Word exist");
}
else {
    alert("Word do not exist");
}

PS:我也尝试将
$check_放在
escapeRegExp()函数中,就像我用
$word
做的那样,但这根本不起作用


一个友好的人,谁能告诉我出了什么问题?

我不明白你为什么要逃避责任

您的escapeRegExp函数(不再转义,因此现在称为regExp)应该简单如下:

function regExp(string) {
    //this regex will match only if there is the same string in your list. 
    //Only spaces are used as boundaries. 
    return  new RegExp("\s"+string+"\s", "g");
}
或者,您可以将第二个输入中的所有单词放入一个数组中,就像在我的小提琴中一样:

    var existingWords = $('input#wordList').val().split(/ /);
    if( existingWords.indexOf( word ) >= 0 )

@Gael下面的答案是您应该采用的方法。至于为什么您当前的代码不能工作,这是因为您创建的正则表达式末尾的\b实际上与“c++中的第一个+匹配,作为单词边界。这是因为+不被视为通常出现在单词中的字符-因此它不是“单词字符”,因此必须是单词边界字符。如果确实要使用此方法而不是下面的方法,请尝试在正则表达式末尾使用(?!\w)而不是\b。如果我要从输入中删除该单词,我该如何做?:)我尝试过使用replace(),但这会删除该字符$('input#check word').HTML(“”)的每个实例