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

时间:2015-04-19 23:35:36

标签: javascript jquery

当我想检查来自一个输入的单词是否存在于另一个输入中时,我遇到了一些问题。

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

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

我试图在网上搜索解决方案,而我发现的内容是regExescaping,但它似乎仍无效。

这是我到目前为止所尝试的内容:

$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");
}

Live Fiddle

PS:我还尝试将$check_here放在escapeRegExp()函数中,就像我使用$word一样,但这不起作用一点都不。

一个友善的人,请告诉我什么是错的?

1 个答案:

答案 0 :(得分:2)

我不明白为什么要逃避字符串。

你的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 )

http://jsfiddle.net/gael/a2tr9tud/1/