Объедините 2 или более регулярных выражений в 1 - PullRequest
1 голос
/ 05 февраля 2020

У меня есть 2 регулярных выражения:

  1. string regex1 = "(?i)(^(?!^.*?admin)(?!^.*?admin[admin\d]).*$)"; это будет проверять подстроку 'admin' в данной строке, и регистр нечувствителен.

  2. string regex2 = "^[^<>?]{5,100}$"; это проверит наличие специального символа (^ <>?) И длины только от 5 до 100.

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

Ex-

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
    ControlToValidate="txtBox1" ErrorMessage="Validation Failed!"
    ValidationExpression="(?i)(^(?!^.*?admin)(?!^.*?admin[admin\d]).*$)">
</asp:RegularExpressionValidator>

<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server"
    ControlToValidate="txtBox2" ErrorMessage="Length Validation Failed!"
    ValidationExpression="^[^<>?]{5,100}$">
</asp:RegularExpressionValidator>

Q. Можем ли мы иметь единственный RegularExpressionValidator, который обслуживает обе вышеуказанные функции?

1 Ответ

1 голос
/ 05 февраля 2020

Регулярное выражение (?i)(^(?!^.*?admin)(?!^.*?admin[admin\d]).*$) слишком избыточно, оно равно (?i)^(?!^.*?admin).*$. Это в основном соответствует любой строке, которая не содержит admin подстроки.

Регулярное выражение ^[^<>?]{5,100}$ запрещает <, > и ? в строке и устанавливает ограничение длины строки.

Объединение двух выполняется путем замены .* в первом шаблоне на потребляющую часть второго регулярного выражения ([^<>?]{5,100}):

(?i)^(?!^.*?admin)[^<>?]{5,100}$

Подробности

  • (?i) - режим без учета регистра для
  • ^ - начало строки
  • (?!^.*?admin) - подстрока admin не допускается нигде после 0 или более символов, кроме символы разрыва строки, как можно меньше
  • [^<>?]{5,100} - от пяти до ста символов, кроме <, > и ?
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...