RegularExpressionValidator Regex для проверки IP-адресов (по одному на строку) в многострочном текстовом поле?

У меня есть многострочное текстовое поле, которое должно принимать только IP-адреса (по одному на строку, без разделительного символа).

Например:

10.1.20.1
10.1.20.2

До сих пор я использовал следующее регулярное выражение с RegularExpressionValidator для проверки текстового поля, но оно работает только в том случае, если в первой строке текстового поля введен один IP-адрес.

Если второй IP-адрес введен во второй строке текстового поля, проверка выражения завершится неудачно и отобразится сообщение об ошибке RegularExpressionValidator.

Мой текущий RegularExpressionValidator выглядит следующим образом,

<asp:RegularExpressionValidator runat="server" ErrorMessage="IP addresses (one per line) only please." ControlToValidate="TextBox1" ValidationExpression="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" />

Я не просто спрашиваю правильное Regex здесь (как бы это ни было полезно), но больше объяснения, которое позволило бы мне самому создать работающее Regex, пожалуйста.

1 ответ

Решение

Кажется, что весь текст должен соответствовать выражению регулярного выражения. Ваше регулярное выражение соответствует IP-адресу как целому слову. Вам нужно заменить \b с ^ и добавьте 0+ количественную группу, соответствующую символу новой строки + IP.

Вот пример:

^  # Start of string
 (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
 (?:               # Optional - 0+ - group start
   (?:\r\n|\r|\n)  # linebreaks of various types
   (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) # 0+ lines having only IP
 )* # Optional group end
$   # End of string

Посмотреть демо

Другие вопросы по тегам