Почему проверка строки с помощью регулярного выражения работает хорошо, а проверка строки не удается? - PullRequest
0 голосов
/ 02 декабря 2018

Я бы хотел проверить, есть ли в имени пользователя только латинские или кириллические буквы и пробелы (ни цифры, ни специальные символы).Совершенно очевидно, поэтому я написал очень простое регулярное выражение: /^[a-zA-Zа-яА-Я\s]+$/, которое делает работу.Но недавно я читал о таких хитростях, как добавление \n для проверки правильности.

Поэтому я переключился на: /\A[a-zA-Zа-яА-Я\s]+\z/, что кажется безопасным, но теперь все тесты возвращают false.

Я проверяю, используя JavaScript, и моя функция:

stringFormat.test(login)

Вывод из консоли Mozilla (чтобы сэкономить ваше время):

stringFormat = /\A[a-zA-Zа-яА-Я\s]+\z/
/\A[a-zA-Zа-яА-Я\s]+\z/
validateString(login, stringFormat)
false
login = "ol"
"ol"
validateString(login, stringFormat)
false
validateString(login, stringFormat)
false
stringFormat = /^[a-zA-Zа-яА-Я\s]+$/
/^[a-zA-Zа-яА-Я\s]+$/
validateString(login, stringFormat)
true
login = "ol345"
"ol345"
validateString(login, stringFormat)
false
validateString("hello", stringFormat)
true
stringFormat = /\A[a-zA-Zа-яА-Я\s]+\z/
/\A[a-zA-Zа-яА-Я\s]+\z/
validateString("hello", stringFormat)
false
stringFormat = /[a-zA-Zа-яА-Я\s]+/
/[a-zA-Zа-яА-Я\s]+/
validateString("hello", stringFormat)
true
login = "ol345"
"ol345"
validateString(login, stringFormat)
true
login = "345"
"345"
validateString(login, stringFormat)
false
stringFormat = /[a-zA-Zа-яА-Я\s]+\z/
/[a-zA-Zа-яА-Я\s]+\z/
login = "ol345"
"ol345"
validateString(login, stringFormat)
false
validateString("hello", stringFormat)
false
stringFormat = /[\Aa-zA-Zа-яА-Я\s\z]+/
/[\Aa-zA-Zа-яА-Я\s\z]+/
validateString("hello", stringFormat)
true
validateString(login, stringFormat)
true
stringFormat = /\A[a-z]{5}\z/
/\A[a-z]{5}\z/
validateString("hello", stringFormat)
false
validateString("heo", stringFormat)
false

Не могли бы вы мне помочь,пожалуйста

1 Ответ

0 голосов
/ 02 декабря 2018

Очевидно, \A и \z не поддерживаются в JavaScript.

Просто посмотрите на эти простые примеры:

\ A [az] + \ Z

^ [az] + $

Я предлагаю вам использовать уже существующий шаблон ^[a-zA-Zа-яА-Я\s]+$, и отключить многострочный режим, что предотвратит ^ и $ от совпадающего начала и конца строки.

См. Эту демонстрацию с образцом шаблона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...