当我想检查来自一个输入的单词是否存在于另一个输入中时,我遇到了一些问题。
第一个输入只能包含一个单词。当我输入一个单词然后点击空格时,脚本应检查第二个输入中是否已存在该单词。
它工作正常,除非我使用+
- 符号。
如果第二个输入中存在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_here
放在escapeRegExp()
函数中,就像我使用$word
一样,但这不起作用一点都不。
一个友善的人,请告诉我什么是错的?
答案 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 )