正则表达式返回自定义字符串

时间:2019-07-16 19:35:49

标签: regex

我正在学习正则表达式,我有一个类似

的字符串
grafana-stage.apps.mt-t1.cdc2.gkp.testdatabase.net:443

我希望结果只给我mt-t1.cdc2

我尝试了(.*)-.*,但没有达到我想要的结果。有没有人解决这个问题?

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

您可以设计很多表达式来返回mt-t1.cdc2,例如以下表达式,

^[a-z]+-[a-z]+\.[a-z]+\.([a-z]+-[a-z0-9]+\.[^.]+)\.[a-z.]+:[0-9]{3}$

将使用捕获组来做到这一点:

([a-z]+-[a-z0-9]+\.[^.]+)

演示

如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。

测试

const regex = /^[a-z]+-[a-z]+\.[a-z]+\.([a-z]+-[a-z0-9]+\.[^.]+)\.[a-z.]+:[0-9]{3}$/gm;
const str = `grafana-stage.apps.mt-t1.cdc2.gkp.testdatabase.net:443`;
const subst = `$1`;

const result = str.replace(regex, subst);

console.log(result);

RegEx电路

jex.im可视化正则表达式:

enter image description here