我有以下的正则表达式:不允许特定特殊字符的正则表达式
[\u00BF-\u1FFF\u2C00-\uD7FF\w \""",.()/-<br\s/?>]+$
它允许任何语言的字符,除了特殊字符,如#,*
等(虽然有些特殊字符被允许,你可以在正则表达式上面看到)。
但是,我的正则表达式还允许不需要的特殊字符,如<,>,&
。
我该如何修改这个正则表达式来禁止输入字符串中的这些字符?
我有以下的正则表达式:不允许特定特殊字符的正则表达式
[\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 />
)。^
and $
将在开始和结束时强制匹配。
感谢您的回答...我认为这应该工作...我正在测试它.....;) –
我认为你也可以从'&'在'"'中删除'&','&'不是正则表达式的特殊字符。 –
是的..它的工作,但正则表达式中间的'''是打破正则表达式我应该如何解决这个问题,我想允许':'和';' –
在接受字符的列表中有这些字符。如何不让他们在那里?看起来你可能会误解你的正则表达式实际上意味着在那里用“"”来表示,并且看起来像一个br标签。 – Chris
@ Chris..yes ...这些字符来自我在正则表达式中指定的范围,但这是问题,我应该如何修改正则表达式来排除这些字符? –
请查看https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx#character_classes以获取有关如何使用字符类构造的信息。它匹配任何字符,所以一个更好的字符会是'[\ u00BF- \ u1FFF \ u2C00- \ uD7FF \ w \“;”“,。()/ - br \ s /?] + $'这是相同的作为你的,但删除'<', '>'和'&'。我没有进一步研究为什么它可能无法工作,所以我不保证这会解决您的问题。 – Chris