У меня возникла небольшая проблема, когда я хочу проверить, существует ли слово с одного входа, в другом вводе.Проверьте, существует ли слово с одного входа в другом
Первый вход может содержать только одно слово. Когда я набрал слово, а затем ударил пробел, скрипт должен проверить, существует ли слово во втором вводе. Он отлично работает, за исключением случаев, когда я использую +
-sign.
Если во втором входе есть 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
, но это не работает вообще.
Дружелюбный человек, который может сообщить мне, что случилось?
@ ответ Гаэля в поле ниже путь вы должны делать это. Что касается того, почему ваш текущий код не работает - это потому, что \ b в конце созданного вами регулярного выражения фактически соответствует первому + в «C++» в качестве границы слова. Это связано с тем, что a + не считается символом, который обычно появляется в словах - следовательно, он не является «символом слова» и поэтому должен быть символом границы слова. Если вы действительно хотите использовать этот подход вместо приведенного ниже, попробуйте использовать (?! \ W) вместо \ b в конце вашего регулярного выражения. –