创建一个用于查找以逗号分隔的字符串而不重复中心部分的正则表达式

时间:2018-01-11 16:41:11

标签: javascript regex

我正在寻找一个匹配ALL OF的正则表达式,只有以下字符串boofootarboo,fooboo,tarfoo,tarfoo,bootar,bootar,fooboo,foo,tarboo,tar,footar,boo,footar,foo,boo,{ {1}}和foo,boo,tar

(重复自己的字符串,例如foo,tar,booboo,boo并不好)

另外:我需要正则表达式本身只包含字符串boo,boo,tarboofoo

所以,回顾一下:我希望在匹配的字符串和regEx本身都不重复。

有什么方法可以达到这个结果吗?

这是我到目前为止tar

1 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

^(boo|foo|tar)(?!.*\1)(?:,(boo|foo|tar)(?!.*\2))*$

Click for Demo

<强>解释

  • ^ - 断言字符串的开头
  • (boo|foo|tar) - 匹配boofootar并将其捕获为第1组
  • (?!.*\1) - 否定前瞻以确保第1组中存储的内容不会出现在字符串中的任何其他位置
  • (?:,(boo|foo|tar)(?!.*\2))*
    • ,(boo|foo|tar) - 匹配,后跟boofootar并将其存储为第2组
    • (?!.*\2) - 否定前瞻以确保第2组中存储的内容不会出现在字符串中的任何其他位置
    • * - 匹配以上子序列0+次
  • $ - 断言字符串的结尾

替代正则表达式:

^(?:,?(boo|foo|tar)(?!.*\1))*$