我想让我的用户指定给定字符串中允许的字符。
所以...正则表达式很棒,但对我的用户来说太难了。
我的计划是让用户指定允许的字符列表 - 例如
a-z|A-Z|0-9|,
我可以把它变成一个正则表达式来进行匹配:
[a-zA-Z0-9,]*
然而,如果用户指定了
,我会有点失去处理所有逃脱的事情a-z|A-Z|0-9| |,|||\|*|[|]|{|}|(|)
显然,一个选择是单独处理每个案例,但在我写出这样一个讨厌的解决方案之前 - 是否有一些很好的方法来做到这一点?
由于
大卫
答案 0 :(得分:2)
忘记正则表达式,这是一个更简单的解决方案:
bool isInputValid = inputString.All(c => allowedChars.Contains(c));
答案 1 :(得分:1)
您可能对您的客户是对的,但您可以提供一些介绍性的正则表达式材料,看看它们是如何发展的 - 您可能会感到惊讶。
如果你真的需要简化,你可能也需要使用管道字符,并提供一个替代方案,例如将每个项目放在一个新行上(例如在多行文本框中)。
答案 2 :(得分:0)
为了让您的用户尽可能简单,为什么不放弃“|”和字符范围的概念,例如“a-z”,并让它们只是键入他们想要允许的完整字符列表:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890 * {}()
你明白了。我认为这会简单得多。