【问题标题】:Regex Valid IP adresse with mask带掩码的正则表达式有效 IP 地址
【发布时间】:2021-10-26 13:53:08
【问题描述】:

我的正则表达式有问题,我有这个

<asp:TextBox CssClass="form-control" pattern="\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]?\/(3[0-2]|[0-2][0-9]|[0-9]))\b" placeholder="Adresse IP" ID="Ip_address" runat="server" />

所以这是我的正则表达式

\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]?\/(3[0-2]|[0-2][0-9]|[0-9]))\b

当 IP 地址低于 200.200.200.200 时,它会强制用户添加掩码 /1 例如,但当它等于或高于它时不起作用

我实际拥有的

1.1.1.1 -> 强制/something 让它工作

199.199.199.199 -> 强制 /something 让它工作

200.200.200.200 -> 不强制/something 所以它不起作用

250.250.250.250 -> 不强制/something 所以它不起作用

【问题讨论】:

  • pattern 正则表达式必须匹配整个输入字符串。
  • @WiktorStribiżew 我不明白你想说什么
  • 您查看过这个之前的问题及其答案吗? stackoverflow.com/questions/5360768/…
  • @WiktorStribiżew 我在模式中这样做是因为在我尝试stackoverflow.com/a/51148542/10863293stackoverflow.com/a/17978652/10863293 后我有一个表单验证它不起作用也许我没有正确添加它们我不知道。我只是复制/粘贴
  • 我刚刚提到了我提到的内容,因为您使用的是\b,单词边界,可能没有意识到它们在这里毫无意义,因为实际上整个正则表达式都放在^(?:)$ 之间并因此被锚定。我不确定您所说的“强制”和“不起作用/工作”是什么意思。正则表达式匹配字符串或不匹配。您要匹配的输入是什么?你能提供几个吗?那些不应该匹配的?

标签: regex ip-address


【解决方案1】:

您需要确保正确地对正则表达式的这些部分进行分组。你可以使用

^(?: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]?)){3}\/(?:3[0-2]|[0-2]?[0-9])$

请参阅regex demo详情

  • ^ - 字符串开头
  • (?: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]?)){3} - . 和一个八位组模式出现 3 次
  • \/ - 一个 / 字符
  • (?:3[0-2]|[0-2]?[0-9]) - 3,然后是 012,或可选的 012,后跟任何单个数字。
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多