正则表达式重复字符串忽略字符串(#)

时间:2018-05-02 18:29:05

标签: regex

我需要一个如下所示的正则表达式。

输入字符串:

####
####white-space    
Test#
Test#white-space

输出:

####               - invalid
####white-space    - invalid
Test###            - invalid
Test-Test###white-space - invalid
Test-Test#         - valid
Test#white-space   - valid

正则表达式应匹配以#或#[space]或#white-space结尾的字符串,但它不应与以重复的#或#### white-space结尾的字符串匹配。

我有这样的事情(https://regexr.com/3orvv):

^\s*\w*\S*(?:(#)(?!\1))\s?$

但它没有按预期工作。

1 个答案:

答案 0 :(得分:2)

如果我理解了要求,你可以使用这个正则表达式:

^(?!.*#{2}\s*$).*#\s*$

RegEx Demo

  • (?!.*#{2}\s*$)是一个负面的先行者,断言我们没有2个或更多#后面跟着行末的可选空格。
  • .*#\s*$匹配#,后跟0或更多的空格。