正则表达式 - 必须从某些字符开始,但不能包含此字符串

时间:2016-02-12 16:01:04

标签: regex

我有这个正在使用的正则表达式,但现在我需要添加一些东西。

^[|a-z-&+\/](?!\|)

我尝试了一些方法,但我无法提出解决方案。

我希望它添加到它,不匹配任何包含" ##"在任何位置。

这些匹配:

|test
test#test
apple

这些不匹配:

||test
test##test
apple##

1 个答案:

答案 0 :(得分:2)

一种选择是在^锚点(?!.*##)之后的开头添加否定前瞻。

Example Here

^(?!.*##)[|a-z-&+\/](?!\|)

由于Casimir et Hippolyte points out,因为#不能是第一个字符,您可以在现有的前瞻中将此检查添加为an alternation

Example Here

^[|a-z-&+\/](?!\||.*##)

<强>解释

  • ^[|a-z-&+\/] - 匹配字符串开头的字符集中的单个字符(如果您使用的是多行标记,则匹配行)。
  • (?! - 开始否定前瞻
  • \| - 按字面匹配|字符
  • | - 轮换;或..
  • .*## - 检查##字符
  • ) - 关闭否定前瞻