Как сделать несколько регулярных выражений в модели .net mvc? - PullRequest
2 голосов
/ 23 мая 2019

У меня есть свойство модели, для которого я хочу регулярное выражение с одним из двух условий.

[RegularExpression(@"^\(?([5]{1})\)?[-. ]?([0-9]{2})[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"

[RegularExpression(@"^\(?([6]{1})\)?[-. ]?([0-9]{2})[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"

Как я могу объединить их как или условие?

1 Ответ

0 голосов
/ 23 мая 2019

Ваши регулярные выражения отличаются первой соответствующей цифрой. Поместите 5 и 6 в один символьный класс (и удалите {1} избыточные квантификаторы с группами - здесь вам не нужны группы захвата для проверки):

[RegularExpression(@"^\(?[65]\)?[-. ]?[0-9]{2}[-. ]?[0-9]{3}[-. ]?[0-9]{4}$")]

Обратите внимание, что RegularExpressionAttribute regex должно соответствовать всей входной строке , так что вы можете фактически пропустить якоря ^ и $:

[RegularExpression(@"\(?[65]\)?[-. ]?[0-9]{2}[-. ]?[0-9]{3}[-. ]?[0-9]{4}")]

График регулярных выражений :

enter image description here

См. Демоверсию regex .

Если вы хотите избежать совпадения значений с несовпадающими скобками в начале, измените шаблон на

^(?:\([65]\)|[65])[-. ]?[0-9]{2}[-. ]?[0-9]{3}[-. ]?[0-9]{4}$

См. это демо регулярных выражений .

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