Задать вопрос

Почему получается неверный результат RegExp в javascript?

Есть такой код проверки строки (буквы и цифры):
var r = new RegExp("[A-Za-z0-9]+");

r.test("abc"); //true
r.test("абв");//false

Но r.test("^#$s") -true , хотя в строке присутствуют лишние небуквенные символы

Как изменить регулярку, чтобы она проверяла корректно?
  • Вопрос задан
  • 2636 просмотров
Подписаться 4 Оценить 1 комментарий
Решения вопроса 1
nowm
@nowm
r.test("абвabc"), кстати, тоже покажет true. У вас регулярка написана так, что она возвращает true, если в строке есть хотя бы один символ из [A-Za-z0-9], но она совсем не запрещает использовать кроме разрешённых символов остальные. Если в куче неразрешённых символов будет хотя бы один разрешённый, она вернёт true. Нужно по краям регулярки добавить символы начала и конца строки:

var r = new RegExp("^[A-Za-z0-9]+$");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ezhikov
@ezhikov
[A-Za-zА-ЯЁа-яё0-9]+
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы