【问题标题】:HTML5 Validation issueHTML5 验证问题
【发布时间】:2015-10-21 20:27:08
【问题描述】:

我正在尝试使用 HTML5 pattern 标签验证输入。 有 3 个单独的输入检查:

  • a-e 范围内的大写或小写字符,1 个字符限制[A-Ea-e]{1} 例如:A、B、e ...
  • 只有数字和逗号。逗号不是字符串的第一个或最后一个字符。 [0-9]+,*[0-9]+ 例如:0,52356, 0677,67 ...
  • a-e 范围内的大写或小写字符,1 个字符限制[A-Ea-e]{3} 例如:AbE、cDa

我想将or * sign with 1 char limit 条件添加到所有这些样本中。

对于上面列出的每张支票,可能会有 1 * 号也被接受。但是如果有 * 符号,添加更多字符必须以无效结果结尾。

我是正则表达式的新手。想不通。

有什么建议吗?

【问题讨论】:

  • 你在问什么?
  • 我还是不知道你在问什么。
  • @demonoid:“样本”是什么意思?应该匹配的字符串?请提供准确的例子,那些是有效的。你的第二个条件太模糊了。数字和逗号 - [0-9,]*?
  • @stribizhev 更新问题

标签: regex html validation input pattern-matching


【解决方案1】:
^([A-Ea-e]{1}|[0-9]+(,[0-9]+)*|[A-Ea-e]{3})\*?$

有效:

A
AAA
1
1,2
1,2,3
A*
AAA*
1*
1,2*
1,2,3*

无效:

AA
AAAA
,1
1,
1,**

如果你想让它们分开:

^[A-Ea-e]{1}\*?$
^[0-9]+(,[0-9]+)*\*?$
^[A-Ea-e]{3}\*?$

【讨论】:

  • 请注意,我的正则表达式不允许1,,2,而您的则允许。我不确定这是否正确。