【问题标题】:Regex expression optimization正则表达式优化
【发布时间】:2015-10-26 10:33:42
【问题描述】:

用户输入的输入值可能是:

  • * 符号,限制为 1 个字符(除 * 外没有其他符号)

  • 0-9 个数字和.(在点的情况下不能是开始或结束字符),限制为 6 个字符

以下数据为有效示例:0.10; 010; 10个; 065.34; *

我正在使用以下正则表达式:

^([0-9]+)|([0-9]+[.]{1,1}[0-9]+)|[*]+$

我发现它太长而且不是最佳的。有什么建议吗?

【问题讨论】:

    标签: regex pattern-matching


    【解决方案1】:

    您可以使用这个较短的正则表达式:

    ^((?=[\d.]{1,6}$)\d+(?:\.\d+)?|\*)$
    

    RegEx Demo

    (?=[\d*]{1,6}$) 是对整个输入强制执行 length=6 的前瞻。

    【讨论】:

    • * 只允许 1 个字符或 6 个带点的字符数
    • 我在这个例子中测试了新的正则表达式regex101.com/r/qD7zJ8/3。它不接受没有点的数字,例如:10; 500 等
    • 你能重新检查一下正则表达式吗?
    • 糟糕,在最后一组之后错过了?。现已修复,请检查
    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多