3

Вопрос по regex – Нужна помощь с регулярным выражением, чтобы соответствовать группе крови

Я пытаюсь найти регулярное выражение, которое помогает мне проверитьBlood Group поле - которое должно принимать только A [+ -], B [+ -], AB [+ -] и O [+ -].

Вот регулярное выражение, с которым я придумал (и проверено с использованиемRegex Tester):

[A|B|AB|O][\+|\-]

Теперь этот шаблон успешно соответствует A, B, O [+ -], но не соответствует AB [+ -].

Может ли кто-нибудь предложить регулярное выражение, которое будет служить моей цели?

Спасибо, м ^ е

  • Error: User Rate Limit Exceeded

    от miCRoSCoPiC_eaRthLinG
  • Error: User Rate Limit Exceeded

    от miCRoSCoPiC_eaRthLinG
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededgskinner.com/RegExrError: User Rate Limit Exceeded

    от miCRoSCoPiC_eaRthLinG
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
5 ответов
  • 2

    Скобки [] обозначают класс символов

    что означает «любой из приведенных здесь символов». Вы хотите скобки () для группировки:

    (A|B|AB|0)(\+|-)
    

  • 16

    Пытаться: (A|B|AB|O)[+-]

    Пытаться:

    (A|B|AB|O)[+-]
    

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

    Как вы упомянули в комментариях, если строка, с которой вы хотите сопоставить, имеет точные значения, которые вы ищете, вы можете сделать это:

    ^(A|B|AB|O)[+-]$
    

    Безначало строки и конец якоря строкитакие вещи, как «helloAB + asdads» будет соответствовать.

  • 0

    ^? (A | B | AB | O) [+ -] $ Это даст правильный выход.

  • 0

    Для нечувствительного к регистру атрибута шаблона html вы можете попро

    бовать это

    ([AaBbOo]|[Aa][Bb])[\+-]
    
    
    <input type="text" maxlength="3" pattern="([AaBbOo]|[Aa][Bb])[\+-]" required />
    

  • 2

    Когда вы строите чередование (например,

    (A|B|AB|O)), вы должны быть осторожны с упорядочением элементов. Многие движки регулярных выражений будут останавливаться на первом подходящем заместителе (а не на самом длинном). Если бы не[-+] заставляя отступить,(A|B|AB|O)[-+] не будет работать для"AB+", Наверное лучше сказать(AB|A|B|O)[-+] (но вы должны проверить документы для вашего движка регулярных выражений).

    Кроме того, если вы не собираетесь собирать антиген для последующего использования, вам следует использовать скобки без захвата для группировки:(?:AB|A|B|O)[-+].

    Кроме того, если вы хотите убедиться, что единственная вещь в строке - это группа крови, вам нужны якоря, чтобы она не соответствовала только части строки:^(?:AB|A|B|O)[-+]$, Краткое примечание по якорям, в зависимости от вашего регулярного выражения,^ может соответствовать началу строки, а не началу строки, если вы передадите ей параметр многострочного соответствия. Так же,$ может соответствовать концу строки, а не концу строки. По этой причине обычно используются три других якоря (но не% 100):\A, \Z, а также\z, Если ваш движок регулярных выражений поддерживает их,\A всегда соответствует началу строки,\Z соответствует концу строки или символу новой строки непосредственно перед концом строки, и\z соответствует только отправке строки.