regex 正则表达式采用“:“之后的文本,不包括“:“

eblbsuwk  于 2022-11-26  发布在  其他
关注(0)|答案(2)|浏览(112)

我有这样的字符串:

194.44.176.116:8080

我希望正则表达式接受冒号':'后面的所有内容,但不接受:我该怎么做?
这是我做的,但它抓住了数字和冒号':',我不想要的。

var portRe = /(?<=:)\d{2,5}$/gi;

我在NodeJ的应用程序中使用了这个。

jgwigjjp

jgwigjjp1#

获取:和结尾之间所有内容的正则表达式为:

/[^:]+$/

但我们知道,端口是一个数字,您可以只检查字符串末尾的数字:

/[0-9]+$/

请注意,这并不检查是否存在:,因此只返回最后一位数字。如果您确定您有一个字符串,这两个是最容易理解的最低限度的解决方案。
否则,请参考其他答案执行lookahead/lookbehind或使用非捕获/捕获组。

qij5mzcb

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]);

相关问题