Мне нужно, если это возможно, регулярное выражение, соответствующее следующему и как я могу проверить его с помощью javascript или пакета js узла - PullRequest
0 голосов
/ 12 марта 2019

любая цифра или заглавная буква (5 из них), за которой следует символ «?», Или любая цифра или заглавная буква (6 из них), за которой следует необязательный символ «?»

Например, если у меня есть:
AA54ZG - должно совпадать
AA54ZG?- должно соответствовать
AA54Z?- должно соответствовать
aA54ZG - не должно соответствовать
? A54ZG - не должно совпадать
AA54Z - не должно совпадать

и т. д. (я могу привести больше примеров, еслиты чувствуешь себя нужным)

Ответы [ 3 ]

0 голосов
/ 12 марта 2019

Это тот, который я придумал, он работает для приведенных вами примеров:

(?:^[A-Z0-9]{6}\??$)|(?:^[A-Z0-9]{5}\?$)

Проверьте здесь: https://regex101.com/r/HP0JH9/2

0 голосов
/ 12 марта 2019

Другой способ сделать то же самое (но будет соответствовать меньше шагов).

[\dA-Z]{5}(?:\?|[\dA-Z]\??)
  • [\dA-Z]{5}: 5-кратная заглавная буква или цифра
  • (?:\?|[\dA-Z]\??): сопровождается либо знаком вопроса, либо другой заглавной / цифрой и дополнительным знаком вопроса. ?: просто делает группу без захвата.

В зависимости от вашего варианта использования, добавьте ^ и $ в начало и конец соответственно для проверки всей строки.

https://regex101.com/r/jPv3w7/1

0 голосов
/ 12 марта 2019

Вот, пожалуйста.Просто установите для переменной myTest значение, которое вы хотите проверить, или создайте более сложный тест, если вы не доверяете Regex:)

const MY_REGEX = /^([A-Z0-9]{5}\?)|([A-Z0-9]{6}\??)$/

function test( str ) {
  if( MY_REGEX.test( str ) )
    document.write( str +": MATCHES<br>" );
  else
    document.write( str +": DOESN'T MATCH<br>" );
}

test( "AA54ZG" ); // MATCHES
test( "AA54ZG?" ); // MATCHES
test( "AA54Z?" ); // MATCHES
test( "aA54ZG" ); // DOESN'T MATCH
test( "?A54ZG" ); // DOESN'T MATCH
test( "AA54Z" ); // DOESN'T MATCH

Объяснение:

[A-Z0-9] {5}: 5 (или 6) заглавных букв или цифр.

\ ??: необязательный "?"(нужно экранировать с помощью \ ?, потому что? зарезервировано для "необязательно")

\?: требуется "?"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...