我有以下正则表达式:
[\u00BF-\u1FFF\u2C00-\uD7FF\w \""",.()/-<br\s/?>]+$
它允许任何语言的字符,但特殊字符除外,如 #,*等等(尽管如您在上面的正则表达式中所见,允许使用一些特殊字符)。
但是,我的正则表达式也允许不需要的特殊字符,例如 <,>,& .
我应该如何修改此正则表达式以禁止输入字符串中出现这些字符?
请您参考如下方法:
您需要对某些正则表达式部分使用交替( <br\s/?> 被视为单独的字符 < 、 b 等)和 /-<正在创建一个接受比您想象的更多字符的范围:
因此,我建议使用
^(?:[\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/:;-]|"|<br\s?/?>)+$
在 C# 中,使用逐字字符串文字:
@"^(?:[\u00BF-\u1FFF\u2C00-\uD7FF\w "",.()/:;-]|"|<br\s?/?>)+$"
我假设您需要匹配 3 个“实体”或它们的组合:
-
[\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/-]- 字符范围\u00BF-\u1FFF和\u2C00-\uD7FF,\w,一个空格,一个双引号,,,.,(,),/和文字连字符 -
"- 文字" -
<br\s?/?>-<br>标签(这可以匹配<br>、<br/>和<br />)。
^和 $将在开头和结尾强制匹配。
