繁体   English   中英

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

[英]Disallow specific special characters in regex

我有以下正则表达式:

[\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?/?>)+$"

请参阅regexstorm上的演示

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

  • [\¿-\῿\Ⰰ-\퟿\\w ",.()/-] -字符的范围\¿-\῿\Ⰰ-\퟿\\w ,一个空间,一个双引号, ,.()/以及文字连字符
  • &quot; -文字&quot;
  • <br\\s?/?> - <br>标签(可以匹配<br><br/><br /> )。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM