【问题标题】:ASP.net core RegularException attribute - multiple conditionsASP.net 核心 RegularException 属性 - 多个条件
【发布时间】:2019-09-23 08:14:29
【问题描述】:

我有两个应该匹配的正则表达式:

"^[a-z0-9\\!@\\$\\^&\\-\\+%\\=_\\(\\)\\{\\}\\<\\>'\";\\:/\\.,~`\\|\\\\]+$"

".*(g[o0]+gle).*"

第一个接受任何字母数字字符(还有一些额外的字符)。喜欢helloworld123。第二个应该拒绝任何包含单词“google”的字符串(以不同的形式 - 例如:gooo0gle)。

允许:

hello
helloworld
helloworld123

不允许:

hellogoogle
google
...

我想使用RegularExpression 来匹配这个字符串。想到了类似的东西:

[RegularExpression("^[a-z0-9\\!@\\$\\^&\\-\\+%\\=_\\(\\)\\{\\}\\<\\>'\";\\:/\\.,~`\\|\\\\]+$|.*(g[o0]+gle).*"]

但它不起作用,因为第二部分 (.*(g[o0]+gle).*) 不应该。

怎么做才对?

谢谢。

【问题讨论】:

    标签: c# asp.net regex asp.net-core


    【解决方案1】:

    您可以通过将第二个正则表达式放在 negative look ahead 中来使用第二个正则表达式,并将第一个正则表达式用作字符集并将两者结合起来以获得您可以使用的以下正则表达式,

    ^(?!.*g[o0]+gle)[-a-z0-9!@$^&+%=_(){}<>'";:\/.,~`|]+$
    

    在这里,(?!.*g[o0]+gle) 否定前瞻将拒绝任何包含 google 的字符串或您的正则表达式支持的任何变体,并且此字符集 [-a-z0-9!@$^&amp;+%=_(){}&lt;&gt;'";:\/.,~|]+` 将匹配它允许的一个或多个字符.

    此外,您不需要在字符集中转义大多数特殊字符,因此除了/ 之外,我已经对大多数特殊字符进行了转义,并且始终将连字符- 作为第一个字符或非常字符集中的最后一个字符,否则根据正则表达式方言,您可能会看到奇怪的行为。

    Regex Demo

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2018-04-20
      • 2021-10-07
      • 2017-06-09
      • 2021-03-11
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多