Шаблон регулярного выражения для имени без пробелов и цифр - PullRequest
0 голосов
/ 28 марта 2019

У меня есть этот шаблон регулярных выражений

/ ^ [^ - \ s] [^ 0-9] [a-zA-Z \ s -] + $ /

Я немного запутался, почему, когда я тестирую его на https://www.regextester.com/ Мой шаблон позволяет добавить одно единственное число перед строкой. Это означает, что если я введу «2Mantas», он все равно примет его, тогда как «22Mantas» не пройдет тест. Я не хочу, чтобы какие-либо цифры или пробелы были разрешены. Любые идеи кто-нибудь?

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

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

^[^-\s\d][a-zA-Z\s-]+$
0 голосов
/ 28 марта 2019

Это должно работать

Получить строку, которая начинается ровно с одной цифры, и после этой цифры должно быть выражение, содержащее только строки (жадные)

^\d{1}([a-zA-Z]+)

https://regex101.com/r/wtBwd7/1

0 голосов
/ 28 марта 2019

Первые два правила в текущем регулярном выражении сводятся к следующему:

  1. ^[^\s-] - первый символ в строке не должен быть пробелом или дефисом.Это объясняет, почему принимается 2steve - 2 не является пробелом или дефисом.
  2. [^0-9] - второй символ в строке не должен быть цифрой.Это объясняет, почему 22steve не принято - 2 во второй позиции является цифрой, которая нарушает это правило.

Предполагая, что вы не хотите ничего, кроме прописных и строчных букв в вашемввод имени и имя не должно начинаться с пробела или дефиса, вы можете упростить до подмножества текущего регулярного выражения:

/^[A-Za-z][A-Za-z-\s]+$/

Regex101

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