【问题标题】:Regex pattern to have only one dot and match integer and decimal numbers正则表达式模式只有一个点并匹配整数和十进制数
【发布时间】:2015-05-25 10:11:58
【问题描述】:

我正在努力创建正确的正则表达式模式来匹配此类字符串:

"3" // true
"3." // true
"3.1" // true
"3.22" // true

这样的字符串应该匹配失败:

"3.." // false
"3.222" // false

我当前的正则表达式 /^\d+(\.\d{1,2})*$/ 只匹配十进制数字。我已经尝试了几次更新,但无法接受所有规则。

【问题讨论】:

    标签: javascript regex regex-lookarounds


    【解决方案1】:

    将小数部分设为可选 + 您忘记将 \ 放在第一个 d 之前,并从小数部分中删除 *

    /^\d+(\.\d{0,2})?$/
      ^             ^
    

    【讨论】:

    • 在控制台试试 - /^\d+(\.\d{1,2})?*$/.test('1.') => Uncaught SyntaxError: Invalid regular expression: /^\d+(\.\d{1,2})?*$/: Nothing to repeat
    • 您更新后的变体与我的 - /^\d+(\.\d{1,2})?$/.test('1.') => false 的行为相同,但我需要 true
    • 因为{1,2},替换成{0,2}
    • @Kosmetika: 3. 是有效的十进制数吗?不确定,但正如@stribizhev所说,{0,2}
    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多