#和##只能在文字字符串中出现一次

时间:2017-03-01 09:22:10

标签: regex

我正在寻找一个正则表达式,字符###只能在文字字符串中出现一次。

它应匹配:

a#abc
a#bc##e
a##bc#e
a##e

但它应该是不符合的:

a#a#b#c
a##bc##e
a##bc##e##d
a###e

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式,由这两种模式的替换组成:

    匹配
  1. ##,然后可能会出现一个#

  2. 匹配单个#,然后可能会出现##

  3. ^[^#]*(?:##[^#]*#?|#[^#]*(?:##)?)[^#]*$
    

    如果正则表达式应匹配没有任何#的字符串,只需将整个交替选项设为可选:

    ^[^#]*(?:##[^#]*#?|#[^#]*(?:##)?)?[^#]*$