禁止正则表达式

时间:2015-07-01 08:50:48

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

我有以下正则表达式:

[\u00BF-\u1FFF\u2C00-\uD7FF\w \&quot;"",.()/-<br\s/?>]+$

它允许除#,*之类的特殊字符之外的任何语言的字符(尽管在上面的正则表达式中可以看到一些特殊字符)。

但是,我的正则表达式还允许使用<,>,&等不需要的特殊字符。

如何修改此正则表达式以禁止输入字符串中的这些字符?

1 个答案:

答案 0 :(得分:4)

您需要对某些正则表达式部分使用替换(<br\s/?>被视为单独的字符<b等),而/-<正在创建范围接受比你想象的更多的字符:

enter image description here

因此,我建议使用

^(?:[\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/:;-]|&quot;|<br\s?/?>)+$

在C#中,使用逐字字符串文字:

@"^(?:[\u00BF-\u1FFF\u2C00-\uD7FF\w "",.()/:;-]|&quot;|<br\s?/?>)+$"

请参阅demo on regexstorm

我假设您需要匹配3&#34;实体中的任何一个&#34;或他们的组合:

  • [\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/-] - 字符范围\u00BF-\u1FFF\u2C00-\uD7FF\w,空格,双引号,,.,{ {1}},()和字面连字符
  • / - 文字&quot;
  • &quot; - <br\s?/?>代码(可以匹配<br><br><br/>)。

<br />^将在开头和结尾强制匹配。