Избегайте начальных и конечных пробелов в строке Alphanumeri c - PullRequest
2 голосов
/ 01 мая 2020

Я пытаюсь проверить строку, чтобы иметь только следующие значения:

1.  Numbers (0-9) are valid
2.  Letters (A-Z, a-z) are valid
3.  No leading spaces are allowed
4.  No trailing spaces are allowed
5.  A space can be entered in the field text (outside of leading or trailing spaces)
6.  The following special characters are allowed:
    1.  Underscore (_)
    2.  Hyphen (-)
    3.  Comma (,)
    4.  Dot (.)

Следующее работает для меня, за исключением пробелов

/^[A-Za-z0-9][A-Za-z0-9\_\.\-\,\s]*$/g

Как чтобы избежать ведущих пробелов и конечных пробелов с тем же шаблоном регулярных выражений?

Ответы [ 2 ]

3 голосов
/ 01 мая 2020

Если между ними могут быть последовательные пробельные символы, вы можете использовать дополнительную часть, где второй класс символов повторяется 0+ раз, заканчиваясь тем же классом символов, за исключением \s

^[A-Za-z0-9](?:[A-Za-z0-9_.,\s-]*[A-Za-z0-9_.,-])?$

Regex demo

Или использование \w для сопоставления символов слова:

^[A-Za-z0-9](?:[\w.,\s-]*[\w.,-])?$

Обратите внимание, что \s также может совпадать с новой строкой.

1 голос
/ 01 мая 2020

начальные пробелы могут быть запрещены с (?!\s) lookahead.

завершающие пробелы могут быть запрещены с (?!.*\s$) lookahead.

Объедините их в свой шаблон после ^:

/^(?!\s)(?!.*\s$)[A-Za-z0-9][A-Za-z0-9\_\.\-\,\s]*$/

См. доказательство

...