简化正则表达式 - 逃避

时间:2010-09-10 15:33:38

标签: c# regex c#-4.0 escaping

我想让我的用户指定给定字符串中允许的字符。

所以...正则表达式很棒,但对我的用户来说太难了。

我的计划是让用户指定允许的字符列表 - 例如

a-z|A-Z|0-9|,

我可以把它变成一个正则表达式来进行匹配:

[a-zA-Z0-9,]*

然而,如果用户指定了

,我会有点失去处理所有逃脱的事情
a-z|A-Z|0-9| |,|||\|*|[|]|{|}|(|)

显然,一个选择是单独处理每个案例,但在我写出这样一个讨厌的解决方案之前 - 是否有一些很好的方法来做到这一点?

由于

大卫

3 个答案:

答案 0 :(得分:2)

忘记正则表达式,这是一个更简单的解决方案:

bool isInputValid = inputString.All(c => allowedChars.Contains(c));

答案 1 :(得分:1)

您可能对您的客户是对的,但您可以提供一些介绍性的正则表达式材料,看看它们是如何发展的 - 您可能会感到惊讶。

如果你真的需要简化,你可能也需要使用管道字符,并提供一个替代方案,例如将每个项目放在一个新行上(例如在多行文本框中)。

答案 2 :(得分:0)

为了让您的用户尽可能简单,为什么不放弃“|”和字符范围的概念,例如“a-z”,并让它们只是键入他们想要允许的完整字符列表:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890 * {}()

你明白了。我认为这会简单得多。

相关问题