c# - ASP.net 核心 RegularException 属性 - 多个条件
问题描述
我有两个应该匹配的正则表达式:
"^[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).*
) 不应该。
怎么做才对?
谢谢。
解决方案
您可以使用您的第二个正则表达式,将其置于否定的前面,并将第一个正则表达式用作字符集并将两者结合以获得您可以使用的以下正则表达式,
^(?!.*g[o0]+gle)[-a-z0-9!@$^&+%=_(){}<>'";:\/.,~`|]+$
在这里,这种(?!.*g[o0]+gle)
否定的前瞻性将拒绝任何包含google
正则表达式支持的字符串或任何变体,并且此字符集[-a-z0-9!@$^&+%=_(){}<>'";:\/.,~
|]+` 将匹配它允许的一个或多个字符。
此外,您不需要在字符集中转义大多数特殊字符,因此我对它们中的大多数进行了转义,除了/
并且始终将连字符-
作为字符集中的第一个字符或最后一个字符,否则取决于在正则表达式方言中,您可能会看到奇怪的行为。
推荐阅读
- c# - 对象的成员列表未在 .NET Core API 控制器中复制
- apache-camel - Apache Camel @UriEndpoint 是否仅用于自动生成 HTML 文档?
- r - 用一个特定的词替换整个字符串
- python - 类装饰器函数示例
- google-apps-script - 有没有办法使用谷歌应用脚本在谷歌工作表条形图上添加错误栏?
- python - 从循环创建 tkinter 检查按钮
- excel - 通过 Excel VBA 将 vlookup 转换为超过 255 个字符
- groovy - 如何在单行上定义整个对象和方法
- android-studio - 此 Ping 功能的替代建议?
- java - 使用 HQL 通过多个映射表进行选择?