我有这样的字符串:
194.44.176.116:8080
我希望正则表达式接受冒号':'后面的所有内容,但不接受:我该怎么做?这是我做的,但它抓住了数字和冒号':',我不想要的。
var portRe = /(?<=:)\d{2,5}$/gi;
我在NodeJ的应用程序中使用了这个。
jgwigjjp1#
获取:和结尾之间所有内容的正则表达式为:
:
/[^:]+$/
但我们知道,端口是一个数字,您可以只检查字符串末尾的数字:
/[0-9]+$/
请注意,这并不检查是否存在:,因此只返回最后一位数字。如果您确定您有一个字符串,这两个是最容易理解的最低限度的解决方案。否则,请参考其他答案执行lookahead/lookbehind或使用非捕获/捕获组。
qij5mzcb2#
这里的一般策略是只使用捕获组来隔离真正要匹配的内容:
/.*:(\d{2,5})/gi
然后访问在第一个捕获组中捕获的内容。
var myString = "194.44.176.116:8080"; var myRegexp = /.*:(\d{2,5})/gi; var match = myRegexp.exec(myString); console.log(match[1]);
2条答案
按热度按时间jgwigjjp1#
获取
:
和结尾之间所有内容的正则表达式为:但我们知道,端口是一个数字,您可以只检查字符串末尾的数字:
请注意,这并不检查是否存在
:
,因此只返回最后一位数字。如果您确定您有一个字符串,这两个是最容易理解的最低限度的解决方案。否则,请参考其他答案执行lookahead/lookbehind或使用非捕获/捕获组。
qij5mzcb2#
这里的一般策略是只使用捕获组来隔离真正要匹配的内容:
然后访问在第一个捕获组中捕获的内容。