Регулярное выражение с символами и числами в произвольном порядке (но не более 10 чисел) - PullRequest
0 голосов
/ 08 марта 2019

Итак, у меня есть строка (с пробелами):

John Doe

, которая может быть смешана с 10 цифрами

John Doe 123456789

В произвольном порядке:

1234john Doe567890

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

([A-Za-z ])([0-9]){10}

Но я не попал в цель

Как я могу написать Regex для проверки этого?

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Попробуйте это

^(?=(?:\D*\d){0,10}\D*$)  

Объяснил:

 ^                   # Beginning of string, BOS

 # Lookahead assertion
 (?=
      # Note this group is designed 
      # so that it is the only place
      # a digit can exist.

      (?:                 # Group
           \D*                 #  Optional, any amount of non-digits
           \d                  #  Required, a single digit
      ){0,10}             # End group, do 0 to 10 times

      # Example:
      #   - If this group runs 0 times, no digits were in the string.
      #   - If this group runs 4 times, 4 digits are in the string.
      #   - Therefore, min digits = 0, max digits = 10

      \D*                 # Finally, and optionally, any amount of non-digits
      $                   # End of string, EOS
 )
0 голосов
/ 08 марта 2019

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

^(?:[A-Za-z ]*[0-9]){0,10}[A-Za-z ]*$

Подробности

  • ^ - начало строки
  • (?:[A-Za-z ]*[0-9]){0,10} - от нуля додесять вхождений
    • [A-Za-z ]* - 0 или более пробелов или букв
    • [0-9] - цифра
  • [A-Za-z ]* - 0 или болеепробелы или буквы
  • $ - конец строки.

Если должна быть хотя бы одна цифра, используйте

^(?:[A-Za-z ]*[0-9]){1,10}[A-Za-z ]*$
                     ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...