我希望将IP与存储在arraylist中的IP列表进行匹配,但它采用此格式
65.232.211.[001-175]
例如。 68.232.211.133
必须匹配
68.232.211.199
不匹配
我希望regualr表达这种情况,但我不知道它会是怎样的.. 我试过但没有得到正确的答案.. 请帮帮我..
答案 0 :(得分:1)
您可以使用类似的内容:68\\.232\\.211\\.0*([1-9][0-9]?|1[0-6][0-9]|17[0-5])
。最后一部分应与您所追求的数字范围相匹配(由Regex_For_Range提供)。
由于正则表达式中的句点字符是一个特殊字符(表示任何字符),因此需要对其进行转义。这是通过添加额外的斜杠来完成的,如下所示:\.
。因为你正在使用C#(似乎)你需要转义斜杠,因为这是C#语言中的特殊字符。
您可以(或者甚至比上面的更好)使用以下正则表达式将IP拆分为2并执行您需要的验证:^([\d.]+?)\.(\d+)$
。此正则表达式将产生2个组,因此以68.232.211.133
为例,它将产生68.232.211
和133
。
以上将允许您将IP的初始部分作为字符串进行匹配,然后它将允许您获取IP的最后一部分,将其更改为数值并使用数学运算符执行范围检查。
在我看来,第二种方法应该受到青睐,因为它(在我看来)更容易维护。