RegularExpressionValidator 用于在多行文本框中验证 IP(每行一个)的正则表达式?
RegularExpressionValidator Regex to validate IPs (one per line) in a multiline textbox?
我有一个多行文本框,它应该只接受 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]?)" />
我不只是在这里要求一个正确的正则表达式(尽可能有帮助),而是更多的解释,请允许我自己创建一个有效的正则表达式。
看起来整个文本应该匹配正则表达式。您的正则表达式只匹配一个 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
我有一个多行文本框,它应该只接受 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]?)" />
我不只是在这里要求一个正确的正则表达式(尽可能有帮助),而是更多的解释,请允许我自己创建一个有效的正则表达式。
看起来整个文本应该匹配正则表达式。您的正则表达式只匹配一个 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