Regex для строки без запусков не буквенно-цифровых символов - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу, чтобы регулярное выражение соответствовало, например, приведенной ниже строке:

Discover - CashBack Bonus & Citi TYP®

Все не алфавитно-цифровые символы, такие как -, & и ®, не могут появляться один за другим.

Пробовал это: ^[A-Za-z0-9 ]+[-]*[A-Za-z0-9 ]+[&]*[A-Za-z0-9 ]+[®]*[A-Za-z0-9 ]+$

1 Ответ

0 голосов
/ 19 сентября 2018

Попробовал это: ^[A-Za-z0-9 ]+[-]*[A-Za-z0-9 ]+[&]*[A-Za-z0-9 ]+[®]*[A-Za-z0-9 ]+$

Это не соответствует, потому что для конечного [A-Za-z0-9 ]+$ требуется 1 символ [A-Za-z0-9 ] в конце строки, в то время как ваша строка заканчиваетсяс ®.

Чтобы соответствовать строке без серий не буквенно-цифровых символов , кроме пробела, вы можете использовать регулярное выражение:

^.?([A-Za-z0-9 ]++.?)*$

Это по сути

  • [A-Za-z0-9 ]++ - серия буквенно-цифровых символов или пробела, за которыми следует
  • .? - не более одного дополнительного символа,
  • (…)* - вышевстречается любое количество раз.

Ведущий ^.? предназначен для добавления одного дополнительного символа в начале строки.И важно использовать собственнический квантификатор ++, чтобы избежать катастрофического отката .

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