【发布时间】:2015-10-26 10:33:42
【问题描述】:
用户输入的输入值可能是:
-
*符号,限制为 1 个字符(除*外没有其他符号)
或
- 0-9 个数字和
.(在点的情况下不能是开始或结束字符),限制为 6 个字符
以下数据为有效示例:0.10; 010; 10个; 065.34; *
我正在使用以下正则表达式:
^([0-9]+)|([0-9]+[.]{1,1}[0-9]+)|[*]+$
我发现它太长而且不是最佳的。有什么建议吗?
【问题讨论】:
用户输入的输入值可能是:
* 符号,限制为 1 个字符(除 * 外没有其他符号)或
.(在点的情况下不能是开始或结束字符),限制为 6 个字符以下数据为有效示例:0.10; 010; 10个; 065.34; *
我正在使用以下正则表达式:
^([0-9]+)|([0-9]+[.]{1,1}[0-9]+)|[*]+$
我发现它太长而且不是最佳的。有什么建议吗?
【问题讨论】:
您可以使用这个较短的正则表达式:
^((?=[\d.]{1,6}$)\d+(?:\.\d+)?|\*)$
(?=[\d*]{1,6}$) 是对整个输入强制执行 length=6 的前瞻。
【讨论】:
* 只允许 1 个字符或 6 个带点的字符数
?。现已修复,请检查