我正在学习正则表达式,我有一个类似
的字符串grafana-stage.apps.mt-t1.cdc2.gkp.testdatabase.net:443
我希望结果只给我mt-t1.cdc2
我尝试了(.*)-.*
,但没有达到我想要的结果。有没有人解决这个问题?
再次感谢您的帮助。
答案 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);
jex.im可视化正则表达式: