【发布时间】:2015-04-12 11:25:43
【问题描述】:
当正则表达式需要特定数量的字符时,有没有办法确定单个字符是否有效?
我有一个 WPF 自定义键盘,想根据正则表达式调整每个键的可用性。 当表达式相当简单并且不期望字符的特定顺序或特定长度来满足模式时,这将很有效。
但是,当模式变得更加复杂和具体时,针对它测试单个字符总是会失败。
例如,给定正则表达式[a-zA-Z0-9]{4}
这些值将成功:
- ABCD
- abcd
- 1234
- A23e
该表达式显然只需要字母数字字符。
我想要一种方法,给定表达式将拒绝特殊字符,比如“%”,但接受“a”,因为“a”在[a-zA-Z0-9] 中是可以接受的。唯一的问题是无法满足的具体长度。
我目前正在使用Regex.IsMatch。我想我正在寻找一种部分匹配测试方法。
【问题讨论】:
-
我已将您的问题阅读了两遍,但我仍然不明白您想要做什么。也许只是替换所有不是字母数字的
[^a-zA-Z0-9]+? -
@HamZa 我把它读作“我有没有可能最终(当添加更多字符时)满足给定的正则表达式的子字符串”。
-
是的,我正在寻找部分匹配。如果表达式需要“abc”,我想要一个方法告诉我,用“a”我走在正确的轨道上,但用“1”却没有
-
@HamZa 但是“ab%d”会因为错误的字符而不是长度而失败 - 但是获得足够通用的填充字符串可能太复杂了(完全正确的)......无论如何我不相信有任何理智的方法可以部分匹配通用正则表达式 - 解析/重构可能是出于娱乐目的而需要研究的东西(但对于实际代码并不真正有用)
-
@Alexei 实际上有一种理智的方式 - 请参阅我的回答;)
标签: c# regex wpf character special-characters