Регулярное выражение: буквенно-цифровые строки с ограничениями

0

Я хочу закодировать регулярное выражение для соответствия буквенно-цифровым строкам со следующими ограничениями:

  1. Содержит хотя бы один символ (a-zA-Z)
  2. Не содержит названия месяцев года
  3. Принимает любой символ или символ
  4. длина между: 8 и 90

  • Допустимые строки: "ABG-1234", "ABG_3423", "ZIZ @342! 2324 ^ $ ^ $ ^"() {}, "1982TEST", "09 87 34 56 aaa"
  • Неверные строки: "123456789", "1234", "JANVIER 89", "DEC 345", "333",

Возможное решение:

     ^           # anchor at the start
    (?=.*\d)     # must contain at least one numeric character
    (?!.*(?:JANVIER|F[Eé]VRIER|MARS|AVRIL|MAI|JUIN|JUILLET|AO[Uù]T|SEPTEMBRE|OCTOBRE|NOVEMBRE|D[Eé]CEMBRE|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))#Does not contain any month name
   (\w)          # Any Character
    (?=.*[a-z])  # must contain one lowercase character
    (?=.*[A-Z])  # must contain one uppercase character
    .{8,90}      # From 8 to 10 characters in length
     $            # anchor at the end"

  • 1
    Не могли бы вы опубликовать действительную и недействительную строку, с которой вы тестируете.
  • 1
    Рассматривали ли вы разделить это на несколько запросов, кажется, что ваши ограничения не зависят друг от друга. Также, если вы хотите больше ограничений позже, вам не нужно еще более сложное регулярное выражение. Просто упрощает чтение как программист. У вас есть причина сделать все это за один звонок?
Показать ещё 4 комментария
Теги:
boost

1 ответ

1
Лучший ответ

regex отлично, когда вы хотите извлечь некоторые данные. Здесь вы просто хотите проверить разные характеристики. ИМХО, вы должны действовать следующим образом:

  1. проверить размер (O (1))
  2. поиск любого альфа-символа (O (n))
  3. поиск по месяцам (здесь может быть интересно regex)

Каждая функция может быть проверена независимыми регулярными выражениями. Вы можете написать все из них, а затем объединить их в один, который выполняет логическое И при поиске.

Взгляните на главный ответ этой темы: Combine Regexp

Ещё вопросы

Сообщество Overcoder
Наверх
Меню