Регулярное выражение: проверка, содержит ли строка от 1 до 6 цифр и ровно 4 специальных символа - PullRequest
2 голосов
/ 28 июня 2019

Я пытаюсь проверить строку с помощью регулярного выражения, строка должна иметь от 1 до 6 цифр и ровно 4 специальных символа (что я имею в виду под специальными символами, это символы типа $! ^) ("'. Non английские / латинские символы могут быть интерпретированы как буквенно-цифровые и не имеют большого значения для этого случая.

Я использую это регулярное выражение в атрибуте шаблона при вводе HTML.

Пример: 12? 74 @ "= 5 должна быть допустимой строкой.

Я уже пробовал:

([1-9]{1,6})([@"?']{4})

Но это не работает так, как задумано, я не могу проверить строку, когда символы смешаны, например: 1254 @@@@ в порядке, но 12 @@ '? 44 недопустимо.

Может кто-нибудь помочь мне решить эту проблему? Я новичок в регулярных выражениях, и мне нужна помощь. Спасибо!

1 Ответ

1 голос
/ 28 июня 2019

Вы можете использовать

pattern="(?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$)(?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$).*"

См. Демонстрационный пример регулярных выражений

Обратите внимание, что регулярное выражение HTML5 автоматически переносится с ^(?: и )$, поэтому полученный шаблонбудет выглядеть как

/^(?:(?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$)(?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$).*)$/

Подробности

  • ^ - начало строки
  • (?=(?:[^0-9]*[0-9]){1,6}[^0-9]*$) - разделены от 1 до 6 цифрс любым количеством недопустимых цифр в строке
  • (?=(?:[A-Za-z0-9]*[^A-Za-z0-9]){4}[A-Za-z0-9]*$) - ровно 4 знака, отличных от букв или цифр ASCII, разделенных любым количеством букв или цифр ASCII, допустимых в строке
  • .* - любые 0+ символов, кроме символов разрыва строки, как можно больше
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...