我想写一个匹配端口的正则表达式。这很好用,但通常时间也会匹配。我想创建一个负的向前看和向后看,这样如果字符串中有另一个冒号,它就不会匹配。但我犯了一个错误,我无法发现它:
我希望端口匹配,但时间不匹配。
(?<!:):\d{1,5}\b(?!:)
这是link to the saved regex。
有时候,有些端口显示为:443和:80,但没有IPv4信息。这就是为什么我正在研究环视解决方案。我使用的是ECMAScript。
我想写一个匹配端口的正则表达式。这很好用,但通常时间也会匹配。我想创建一个负的向前看和向后看,这样如果字符串中有另一个冒号,它就不会匹配。但我犯了一个错误,我无法发现它:
我希望端口匹配,但时间不匹配。
(?<!:):\d{1,5}\b(?!:)
这是link to the saved regex。
有时候,有些端口显示为:443和:80,但没有IPv4信息。这就是为什么我正在研究环视解决方案。我使用的是ECMAScript。
5条答案
按热度按时间tkclm6bt1#
如果你使用的是Javascript,并且你可以使用可变长度的lookbehind,你可以在左边Assert
:
,但是不能在左边Assert.
,然后是数字和:
:Regex demo
如果您还想匹配冒号:
Regex demo
cld4siwp2#
此正则表达式:
乌尔
或
平方
假设
ip's
仅为ipv4乌尔
平方英寸Online Demo
xghobddn3#
我想写一个匹配端口的正则表达式。我忘了提一下,端口有时显示时没有IP。
ECMAScript正则表达式:
PCRE:
这可以处理所有情况,包括显示的端口没有IP地址。
查看ECMAScript和PCRE的实际应用。
^
)。\b
)防止第四个匹配.:
模式。\K
)以忽略PCRE中匹配的IPv4地址,并使用ESMAScript中的命名捕获。$
)。示例Javascript:
z31licg04#
如果您对行中单个
:
之后的任何内容感兴趣:并使用组1作为端口。
如果您希望限制性更强一些,将端口的范围限制为实际的0到65535,可以使用以下命令:
(for“为了简洁;- )”我允许在这个正则表达式中使用前导零)
o2rvlv0m5#
正如您提到的,Ecmascript提供了一个解决方案,可以单独匹配端口号,也可以将其作为IPv4的结尾部分: