Нужно написать регулярное выражение в Javascript - PullRequest
0 голосов
/ 03 апреля 2019

Необходимо написать регулярное выражение в JavaScript на поле с ограничением -

Имя может содержать до 80 символов. Он должен начинаться со слова «символ» и заканчиваться словом «символ» или «». Имя может содержать символы слова или '.', '-', ''. "

Пример -

Разрешенные строки -

abc.'
abc-'.'
ab-.''-a

Недопустимые строки -

rish a
rish.-

Что я пробовал до сих пор:

!/^[A-Za-z.-'']{1,80}$/.test(Name)

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Я думаю, вы ищете что-то вроде этого:

^(?=[A-Za-z])[A-Za-z\.\-']{0,79}[A-Za-z']$

Объяснить:

^(?=[A-Za-z]): убедитесь, что строка начинается с символа слова. Это предварительное утверждение, поэтому оно НЕ будет участвовать в матче. Остальная часть шаблона должна по-прежнему содержать не менее 1 и не более 80 символов.

[A-Za-z\.\-']{0,79}: первый и средний символы, следовательно, максимум 79 символов. Минимум один применяется с последним символом.

[A-Za-z']$: заканчивается буквой или апострофом.

Тестируется здесь: https://regex101.com/r/AOQojT/1

0 голосов
/ 03 апреля 2019

Использование заблаговременного утверждения - очень умный способ решения этой проблемы.Другой способ - использовать оператор ИЛИ:

^[a-zA-Z]$|^[a-zA-Z][a-zA-Z.\-']{0,78}[a-zA-Z']$

Он просто проверяет:

^[a-zA-Z]$ - есть только один символ слова

Или |

^[a-zA-Z]$ - один символ слова в самом начале данной строки
[a-zA-Z.\-']{0,78} - от нуля до семидесяти восьми символов.,(точка) не должен быть экранирован, так как он не имеет особого значения в наборе символов.
[a-zA-Z'] - символ из одного слова или апостроф

Таким образом он проверяет строки длиннее, чем 1 символ.

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

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