Ошибка при попытке использовать str.search для поиска символа » «

#javascript

#javascript

Вопрос:

Я пытаюсь найти символ » » внутри строки и получаю эту ошибку:

error: Uncaught SyntaxError: Invalid regular expression: / /: Nothing to repeat

Это пример кода для эмуляции ошибки, с которой я сталкиваюсь:

 var chars1 = 'ABCDEFGHIJLMNOPQRSTUVXZYWK  ~!@#$%^amp;*()';
var char = ' ';
var pos = -1;
pos = chars1.search(char);
console.log(pos); 

Как я могу искать такие символы в строке?

Комментарии:

1. Требуется двойная косая \ черта, результат 27

2. Спасибо, ребята, я попытался избежать этого, используя только одну косую черту, а затем косая черта вызывала ту же проблему. 😡

Ответ №1:

Если вы хотите искать только текст, вы можете использовать String#indexOf , что избавляет от необходимости экранировать метасимволы регулярных выражений.

 var chars1 = 'ABCDEFGHIJLMNOPQRSTUVXZYWK  ~!@#$%^amp;*()';
var char = ' ';
var pos = -1;
pos = chars1.indexOf(char);
console.log(pos); 

Комментарии:

1. Вау! это еще лучше! полностью устраняет проблему, не экранируя специальные символы! Большое вам спасибо!

Ответ №2:

это специальный символ, поэтому его нужно экранировать. Попробуйте:

 var chars1 = 'ABCDEFGHIJLMNOPQRSTUVXZYWK  ~!@#$%^amp;*()';
var char = '\ '; //Yes double  needed to escape for the search
var pos = -1;
pos = chars1.search(char);
console.log(pos);
 

Для получения дополнительной информации ознакомьтесь: https://www.regular-expressions.info/characters.html

Комментарии:

1. Спасибо, решил мою проблему. Я пытался избежать этого, используя только одну косую черту, и это вызывало ту же проблему. 😡