【问题标题】:regular expression for many ips separated by comma用逗号分隔的许多 ip 的正则表达式
【发布时间】:2013-02-14 16:52:53
【问题描述】:

我打算构建一个正则表达式,它将与以逗号分隔的 ips 块匹配。 就我而言,是 ips 的正则表达式和一个逗号,后跟一个断线字符,但我需要设置这个条件:

如果 threre 是最后一行(没有断线字符),逗号是可选的 如果还有其他内容,则必须是逗号,后跟换行符。

你能帮我完成正则表达式吗?

这是我正在构建的正则表达式

((25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)(,\n)?)*

这是测试块

192.168.1.1,
192.56.3.23,
189.35.2.2,
198.23.45.56
192.168.3.24

198.23.45.56 不应该是有效的,因为它不是最后一行,并且行尾没有逗号。

我正在使用这个在线验证器http://regexpal.com/ 来测试正则表达式。

问候。

【问题讨论】:

    标签: regex


    【解决方案1】:

    试试这个:

    ((25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)(,\n|,?$))
    

    并使用“g”标志包含多个匹配项(http://regexpal.com 中的“点匹配所有”复选框)。

    【讨论】:

    • 实际上你的修改帮助了我,我做了一些修改,因为我想要验证整个块而不是任何行并进行全局匹配。谢谢顺便说一句,这是我使用的正则表达式 ^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2 [0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.( 25[0-5]|2[0-4]\d|[01]?\d\d?)(,\n|,?))*$
    • 你能不能只为两个 ip 提供正则表达式,用逗号分隔,例如。 192.168.1.1、192.56.3.23
    【解决方案2】:

    如果您使用如此严格的方案,为什么还要使用正则表达式。试试 myIpList = myIpString.split(',\n')

    【讨论】:

    • 这不会强制使用 IPv4 地址。它也不会拆分列表中的最后 2 个地址。
    • @Roy 这是因为我正在使用这个 jquery 插件并且我试图在这个方法中扩展这个正则表达式 github.com/jzaefferer/jquery-validation/blob/master/…
    • @PinnyM:alexserver 说最后一个无效,因为它没有逗号。 alexserver:很高兴听到您找到了解决方案。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多