我有以下正则表达式:
[\u00BF-\u1FFF\u2C00-\uD7FF\w \""",.()/-<br\s/?>]+$
它允许除#,*
之类的特殊字符之外的任何语言的字符(尽管在上面的正则表达式中可以看到一些特殊字符)。
但是,我的正则表达式还允许使用<,>,&
等不需要的特殊字符。
如何修改此正则表达式以禁止输入字符串中的这些字符?
答案 0 :(得分:4)
您需要对某些正则表达式部分使用替换(<br\s/?>
被视为单独的字符<
,b
等),而/-<
正在创建范围接受比你想象的更多的字符:
因此,我建议使用
^(?:[\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/:;-]|"|<br\s?/?>)+$
在C#中,使用逐字字符串文字:
@"^(?:[\u00BF-\u1FFF\u2C00-\uD7FF\w "",.()/:;-]|"|<br\s?/?>)+$"
我假设您需要匹配3&#34;实体中的任何一个&#34;或他们的组合:
[\u00BF-\u1FFF\u2C00-\uD7FF\w ",.()/-]
- 字符范围\u00BF-\u1FFF
和\u2C00-\uD7FF
,\w
,空格,双引号,,
,.
,{ {1}},(
,)
和字面连字符/
- 文字"
"
- <br\s?/?>
代码(可以匹配<br>
,<br>
和<br/>
)。 <br />
和^
将在开头和结尾强制匹配。