2015-07-01 180 views
1

我有以下的正则表达式:不允许特定特殊字符的正则表达式

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

它允许任何语言的字符,除了特殊字符,如#,*等(虽然有些特殊字符被允许,你可以在正则表达式上面看到)。

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

我该如何修改这个正则表达式来禁止输入字符串中的这些字符?

+0

在接受字符的列表中有这些字符。如何不让他们在那里?看起来你可能会误解你的正则表达式实际上意味着在那里用“"”来表示,并且看起来像一个br标签。 – Chris

+0

@ Chris..yes ...这些字符来自我在正则表达式中指定的范围,但这是问题,我应该如何修改正则表达式来排除这些字符? –

+0

请查看https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx#character_classes以获取有关如何使用字符类构造的信息。它匹配任何字符,所以一个更好的字符会是'[\ u00BF- \ u1FFF \ u2C00- \ uD7FF \ w \“;”“,。()/ - br \ s /?] + $'这是相同的作为你的,但删除'<', '>'和'&'。我没有进一步研究为什么它可能无法工作,所以我不保证这会解决您的问题。 – Chris

回答

4

您需要使用交替对一些正则表达式部分(<br\s/?>被视为独立的字符<b等),并/-<创造了一系列接受许多比你更光想:

enter image description here

因此,我建议使用

^(?:[\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 />)。

^ and $将在开始和结束时强制匹配。

+0

感谢您的回答...我认为这应该工作...我正在测试它.....;) –

+0

我认为你也可以从'&'在'"'中删除'&','&'不是正则表达式的特殊字符。 –

+0

是的..它的工作,但正则表达式中间的'''是打破正则表达式我应该如何解决这个问题,我想允许':'和';' –