Skip to main content
 首页 » 编程设计

c#之禁止在正则表达式中使用特定的特殊字符

2024年02月06日27zfyouxi

我有以下正则表达式:

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

它允许任何语言的字符,但特殊字符除外,如 #,*等等(尽管如您在上面的正则表达式中所见,允许使用一些特殊字符)。

但是,我的正则表达式也允许不需要的特殊字符,例如 <,>,& .

我应该如何修改此正则表达式以禁止输入字符串中出现这些字符?

请您参考如下方法:

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

因此,我建议使用

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

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

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

参见 demo on regexstorm

我假设您需要匹配 3 个“实体”或它们的组合:

  • [\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/-] - 字符范围 \u00BF-\u1FFF和 \u2C00-\uD7FF , \w ,一个空格,一个双引号,, , . , ( , ) , /和文字连字符
  • &quot; - 文字 &quot;
  • <br\s?/?> - <br>标签(这可以匹配 <br> 、 <br/> 和 <br /> )。

^和 $将在开头和结尾强制匹配。