允许方括号的正则表达式

时间:2012-09-18 14:59:07

标签: regex vb.net .net-4.0

这很完美......

 result2 = Regex.Replace(result2, "[^A-Za-z0-9/.,>#:\s]", "", RegexOptions.Compiled)

但我需要允许使用方括号([])。 这看起来是否正确允许Brackets而不更改上面允许和不允许的内容?

result2 = Regex.Replace(result2, "[^A-Za-z0-9\[\]/.,>#:\s]", "", RegexOptions.Compiled)

我需要第二个意见的原因是我认为如果这是正确的,那么其他东西就会阻止它,这是我无法控制的。

2 个答案:

答案 0 :(得分:1)

我不能说任何一个人做了或者没有回答这个问题或尝试提供帮助,如果可以的话,我会把解决方案分散给所有人,因为它让我思考。关键是使用单个\来分隔括号。谢谢大家的帮助。

  result = Regex.Replace(result, "[^A-Za-z0-9/\[\].,>#\s]", "", RegexOptions.Compiled)

答案 1 :(得分:0)

提到的噱头@tripleee确实可以在.NET中使用。只需确保]是第一个字符(或者在这种情况下,首先是^之后。

result2 = Regex.Replace(result2, "[^][A-Za-z0-9/.,>#:\s]", ""); 

但要注意将正则表达式移植到其他版本。有些人会将其视为语法错误,有些会将其视为两个原子:[^][A-Za-z0-9/.,>#:\s],其中第一个原则上只匹配任何东西 - 即任何字符,包括换行符。

另外,为什么使用RegexOptions.Compiled选项?只有在知道你需要它时才应该使用它。性能的提升几乎从来都不会很明显,而且价格非常高,正如here所述。

http://msdn.microsoft.com/en-us/library/8zbs0h2f.aspx