正则表达式匹配基于条件

时间:2017-01-17 17:10:49

标签: javascript regex

我有以下字符串

test test.a test.b test.a.b test2.a test2 test2.a.b

以及以下正则表达式

/(test(\.)(\S*)?)/gi

这将返回以下test.a test.b test.a.b 我想要的是返回test

如果我(\.)?可选,它也会返回test2.a,而我也不想这样做。

我正在寻找的是有条件。如果在test.whatever.else返回test后有空格,则在测试后返回点test,否则其他内容不匹配。

实例:https://regex101.com/r/ZendrY/3

3 个答案:

答案 0 :(得分:3)

您可以将此正则表达式与DOT的可选匹配一起使用,然后在test之后使用一个或多个非空格字符,并用任意一侧的字边界包裹:

/\btest(?:\.\S+)?\b/

RegEx Demo

答案 1 :(得分:0)

您可以使用替换方式,以便test后跟点或空格,而不是使点可选:

/test(?= )|(test(\.)(\S*)?)/gi

答案 2 :(得分:0)

您也可以尝试添加\ b以匹配单词end,例如:

/(test(\.?\b)(\S*)?)/ig

......或积极向前看:

/(test?(?=[\. ])(\S*))/ig