在第一个点之后和第二个点之前捕获单词

时间:2019-09-04 12:15:22

标签: javascript regex

我有一些字符串,例如:

test.router.router1.ping 
test.router.hp.upload
demo.firewall.router.ping

我正在尝试编写一个使前两个字符串通过但不使第三个字符串通过的正则表达式。规则是,如果字符串在第一个点之后和第二个点之前包含单词“ router”,则可以。

我尝试过

[\.router\.]

但它与每个.router匹配。在我的字符串中,第三遍也是。

我该怎么做?谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用

^[^.]*\.router\.

请参见regex demoregex graph

enter image description here

详细信息

  • ^-字符串的开头
  • [^.]*-除.以外的0多个字符
  • \.router\.-一个.router.子字符串。

JS演示:

var strs = [ 'test.router.router1.ping', 'test.router.hp.upload', 'demo.firewall.router.ping']
var rx = /^[^.]*\.router\./;
for (var i=0; i<strs.length; i++) {
  console.log(strs[i], '=>', rx.test(strs[i]))
}

答案 1 :(得分:0)

您可以使用以下正则表达式尝试

^[A-Za-z]*\.router\.

^匹配单词的开头,[A-Za-z]*应该匹配点之间允许的所有内容。

我在https://regex101.com/r/okTpdr/1处尝试过正则表达式

您还可以删除全局修饰符,使其仅与正则表达式的第一个实例匹配