Поэтому я хочу регулярное выражение, которое будет принимать числа или буквенные символы. Если его номер должен начинаться с 1 и он может содержать от 3 до 8 символов, но он не должен иметь длину 6. Если это альфа, он может содержать от 3 до 6 символов.

Это то, что я сейчас использую. Мой вопрос: как я могу избежать длины 6 символов, если она числовая?

      ("^[1][0-9]{2,7} | [A-Za-z]{3,6})$")

Кто-нибудь может предложить мне?

0
sai 13 Апр 2020 в 18:38

2 ответа

Лучший ответ

Просто разделите числовую часть на две части:

("^([1]([0-9]{2,4}|[0-9]{6,7}) | [A-Za-z]{3,6})$")

Тем не менее, интервал и скобки отключены. Исправленное выражение:

^(1([0-9]{2,4}|[0-9]{6,7})|[A-Za-z]{3,6})$

0
lzydrmr 15 Апр 2020 в 13:37

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

^(?![0-9]{6}$)(?:1[0-9]{2,7}|[a-zA-Z]{3,6})$

См. демонстрационную версию regex.

< Сильный > Подробнее

  • ^ - начало строки
  • (?![0-9]{6}$) - не допускается строка из 6 цифр
  • (?:1[0-9]{2,7}|[a-zA-Z]{3,6}) - либо < UL>
  • 1[0-9]{2,7} - 1, а затем от двух до семи цифр
  • | - или
  • [a-zA-Z]{3,6} - от трех до шести букв ASCII
  • $ - конец строки
  • 1
    Wiktor Stribiżew 13 Апр 2020 в 23:09