【问题标题】:Regex allow digits and a single dot正则表达式允许数字和单个点
【发布时间】:2011-04-06 17:54:28
【问题描述】:

什么是允许数字点的正则表达式?关于这个\D 只允许数字,但它不允许点,我需要它来允许数字和 one 点,这是指一个浮点值,我在执行 @ 时需要有效jQuery 中的 987654322@ 函数,但我需要的只是正则表达式,它只允许我需要它允许的内容。

这将在 JavaScript 的原生 replace 函数中移除非数字和其他符号(点除外)。

干杯。

【问题讨论】:

    标签: regex


    【解决方案1】:

    如果你想允许11.2

    (?<=^| )\d+(\.\d+)?(?=$| )
    

    如果你想允许11.2.1

    (?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| )
    

    如果您只想允许1.2(仅浮动):

    (?<=^| )\d+\.\d+(?=$| )
    

    \d 允许数字(而\D 允许任何数字)。

    (?&lt;=^| ) 检查数字前面是否有空格或字符串的开头。 (?=$| ) 确保字符串后跟一个空格或字符串的结尾。这样可以确保该数字不是另一个数字的一​​部分,也不是位于单词或任何内容的中间。

    编辑:添加更多选项,通过添加前瞻和后置改进正则表达式以确保数字是独立的(即不在单词或其他数字中间。

    【讨论】:

    • 该正则表达式将报告几乎所有内容的匹配项。例如,在 .NET 中,Regex.Replace("xyzzy", @"\d*(\.\d+)?", "!"); 的结果将是 !x!y!z!z!y!。我很确定 JavaScript 中的结果是一样的。由于一切都是可选的,因此正则表达式将匹配每个位置。
    • @Jim Mischel,好电话。我用改进的正则表达式编辑了答案。
    • @[Harpyon] 有什么遗漏吗?我收到消息“无效组”: /(?
    • JavaScript 显然不支持 Lookbehinds。
    【解决方案2】:
    \d*\.\d*
    

    说明:

    \d* - 任意位数

    \。 - 一个点

    \d* - 更多数字。

    这将匹配123.456.123123.,但不匹配123

    如果您希望点是可选的,在大多数语言中(不了解 jquery)您可以使用

    \d*\.?\d*
    

    【讨论】:

    • \D 是任何字符除了位。 \d 就是你的意思。
    • \D 是“匹配一个数字”的倒数——它会匹配除数字以外的任何东西!
    • 谢谢@Francisc 和@Platinum。我现在修好了。错误的原因是我从原始问题中复制了\D。我知道在 Python 中 \d 表示“数字”,\D 表示“除了数字之外的任何东西”,但我认为如果 OP 提到 \D 那么它在 jQuery 中一定是不同的。根据你们的cmets,显然我的第一个想法是正确的,我应该坚持下去:)
    • 在 C# 中获取无效的转义序列。任何帮助请
    【解决方案3】:

    试试这个

    boxValue = boxValue.replace(/[^0-9\.]/g,"");
    

    此正则表达式将只允许文本框中的值中包含数字和点。

    【讨论】:

    • 这将允许多个点,问题是只允许一个点
    【解决方案4】:

    我的尝试是组合解决方案。

    string = string.replace(',', '.').replace(/[^\d\.]/g, "").replace(/\./, "x").replace(/\./g, "").replace(/x/, ".");
    string = Math.round( parseFloat(string) * 100) / 100;
    

    从这里开始的一线解决方案:regex replacing multiple periods in floating number。它将逗号“,”替换为点“。” ;用 x 替换第一个逗号;删除所有点并将 x 替换回点。

    第二行清除点后的数字。

    【讨论】:

    • 谢谢。经过2小时的搜索,我得到了这个答案。而且,这完全符合我的一组要求(只有数字和一个点)。再次感谢。
    【解决方案5】:

    试试下面的表达式

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多