【发布时间】:2016-09-28 04:51:55
【问题描述】:
我需要检查的模式是“1w 1d 1h 1m 1s”,有一些限制,例如每个部分只能有 1 到 3 个数字,可以缺少任何部分,可以有任何数字或空格和零件之间的其他空白字符,零件必须按顺序排列。我为它写了一个基本的正则表达式:
^((?:\s*\d{1,3}[wW]\s*)?(?:\s+\d{1,3}[dD]\s*)?(?:\s+\d{1,3}[hH]\s*)?(?:\s+\d{1,3}[mM]\s*)?(?:\s+\d{1,3}[sS]\s*)?)$
现在的问题 - 我卡住了,因为如果我写“1d 1h” - 它不会通过,因为它需要在“1d”之前有一个空格,但我不能没有那个空格,“1w1d”应该是不正确的。使用正则表达式条件并不是一个真正的选择。
【问题讨论】:
-
这可以帮助 ^((?:\s*\d{1,3}[wW]\s+)?(?:\s*\d{1,3}[dD]\ s+)?(?:\s*\d{1,3}[hH]\s+)?(?:\s*\d{1,3}[mM]\s+)?(?:\s*\ d{1,3}[sS]\s*)?)$
-
这样,case "1w 1d" 将无效,因为它现在需要在 w, d, h 之后 1 个空格。
-
试试这个 ^((?:\s*\d{1,3}[wW]\s+|\s*\d{1,3}[wW]\s*$) ?(?:\s*\d{1,3}[dD]\s+|\s*\d{1,3}[dD]\s*$)?(?:\s*\d{1, 3}[hH]\s+|\s*\d{1,3}[hH]\s*$)?(?:\s*\d{1,3}[mM]\s+)?(?: \s*\d{1,3}[sS]\s*|\s*\d{1,3}[sS]\s*$)?)
-
1d1h是有效输入吗? -
@SamjithDasan 谢谢,这个确实有效 :)
标签: regex actionscript-3