检查单词前后的字符

时间:2017-11-29 10:09:34

标签: javascript regex

我需要一个正面的正则表达式,它结合了以下所有3个:

-- ^(.*)\.abc\.(.*)$
-- ^(.*)\.abc$
-- ^abc\.(.*)$

以下情况不适用于正则表达式:

-- 123abc
-- .abc123
-- 123abc.

以下是积极的结果:

--.abc
--.abc.
--abc.

我知道3个条件可以在组中进行OR运算。我正在寻找一个更好的solutoin,可能使用前瞻。

我尝试使用反向引用:/^.*([\.]*)abc\1.*$/但是这对于否定案例也是正面的。

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

^

RegEx Demo

RegEx分手:

  • (.*([.;]))?:开始
  • abc:以点或分号后面的任何内容开头(可选匹配)。请注意,我们在捕获组#2
  • 中的abc之前捕获
  • abc:匹配((?=[.;])\2.*)?
  • abc:我们在\2之前捕获的相同字符以及随后的任何内容(可选匹配)结束。 Lookahead断言用于确保我们不匹配空的后向引用$
  • {{1}}:结束