【发布时间】:2016-05-13 10:24:11
【问题描述】:
我正在尝试编写一个正则表达式来验证具有以下条件的用户输入(asp.net、c#):
- single digits within a range of 1 - 6
- comma separated, but list should not begin or end with a comma
- digits cannot be repeated
- digits should be in ascending order
例如:
- 1,2,3,4,5,6 - valid
- 2,5,6 - valid
- 4 - valid
- 2,5,6, - invalid
- 3,6,5 - invalid
- 2,2,5,6 - invalid
到目前为止,我得到了:
^((1,)?(2,)?(3,)?(4,)?(5,)?(6)?)$
问题是数字 1-5 必须后跟逗号,如果它们是唯一输入的数字,则不正确。
【问题讨论】:
-
无需正则表达式即可轻松完成。正则表达式将无法阅读,太长了。
-
@Wiktor Stribiżew。感谢您的回复。您是否建议我只在 c# 代码中执行检查?另外,无论使用正则表达式是否是最有效的选择,我现在仍然想知道如何在正则表达式中完成它,即使它只是为了学习目的。
-
不,我不会花 40 分钟的时间在一个没人会使用的模式上。关键是您需要捕获您拥有的每个数字,然后使用条件构造来查看匹配的内容。或者列出所有替代方案的蛮力方法。正则表达式不适用于此类任务
-
重复检查和排序最好通过编程语言来完成。
-
@CinCout 但他说他希望将此作为正则表达式用于学习目的,而不是因为它是完成任务的正确方法