繁体   English   中英

正则表达式匹配IP地址+通配符

[英]Regular Expression to match IP address + wildcard

我正在尝试使用RegularexpressionValidator来匹配IP过滤系统的IP地址(带有可能的通配符)。

我正在使用以下正则表达式:

"([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}"

使用Regex.Matches在LINQPad中运行它时工作正常,但在我使用验证器时似乎不起作用。

有没有人建议更好的正则表达式或为什么它会在测试中工作而不是原位?

干杯,艾德

这个: \\\\.|\\\\*\\\\. 看起来像狡猾的一点。 改为:

@"^(([0-9]{1,3}|\*)\.){3}([0-9]{1,3}|\*)$"

并且只接受0-255(谢谢, apoorv020 ):

^((([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\*)\.){3}(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\*)$

asp:RegularExpressionValidator不要求你双重转义反斜杠。 你应该试试:

([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}

[0-9] {1,3}将允许999.999.999.999表格的IP地址。 您的IP地址范围应仅允许0-255。
用([0-9] {1,2})|(1 [0-9] {2,2})|(2 [0-4] [替换[0-9] {1,3}的所有出现0-9])|(25 [0-5])
这对我来说似乎非常复杂,并且可能有更好的方法来做到这一点,但乍一看似乎是正确的。

如何在表达式上放置开始和结束字符串字符

^([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}$

我的回答是针对.NET的,而不是RegularExpressionValidator -specific。

用于IP匹配的正则表达式字符串(使用ExplicitCapture以避免无用的捕获并保持RE简洁):

"\\b0*(2(5[0-5]|[0-4]\\d)|1?\\d{1,2})(\\.0*(2(5[0-5]|[0-4]\\d)|1?\\d{1,2})){3}\\b"

根据具体的使用情况,您可能需要添加适当的锚点,即开头为\\A^ ,末尾$ \\Z$ 然后,您可以删除字边界要求: \\b

(记住在字符串内加倍\\

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM