【问题标题】:REGEX to discard floating numbers and leading zeros正则表达式丢弃浮点数和前导零
【发布时间】:2015-10-13 06:02:00
【问题描述】:

我有一个正则表达式,它应该只允许除零和浮点数之外的正数 ^0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*$ 但它允许浮点数,任何人都可以修改它并让我知道正则表达式

有效:

1-any number 
01 - any number

无效:

00 - any leading zeros
0
1.4 - floating numbers
abc - alphabets 
-1 - negative numbers

【问题讨论】:

  • 你可以试试这个:^[0-9]\d*$
  • [1-9][0-9]*有什么问题
  • 如果你不想要浮点数,为什么你的表达式允许小数点?我想我的问题是,它是“应该只允许(除了零的正数)和浮点数”还是“应该只允许除了(零和浮点数)的正数”?
  • 嗨 Andres,它应该只允许正数,除了(零和浮点数)
  • 嗨 Rahul ^[0-9]\d*$ 允许我不想要的零

标签: javascript java regex


【解决方案1】:

试试这个模式[0]*[1-9][0-9]*

String str = "00012";
str.matches("[0]*[1-9][0-9]*");

地点:

[0]* 是字符串开头的任意数字 0

[1-9] 1 到 9 的一位数

[0-9]* 0 到 9 之间的任意位数

如果你想在 JavaScript 中使用它,只需用 ^ 和 $ 修改它来确定字符串的开头和结尾,如:

^[0]*[1-9][0-9]*$

【讨论】:

    【解决方案2】:

    Stanislav 的正则表达式(见下文)我认为符合您的要求。同意的话就给他点个赞吧! (注意:您可能需要将其包装在 ^ 和 $ 中,以便它匹配字符串的开头和结尾,如下所示:^[0]*[1-9][0-9]*$) 你可以在这里测试它:

    /* https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/Data_form_validation */
    input:invalid {
      border: 5px solid red;
    }
    <input pattern="[0]*[1-9][0-9]*">

    【讨论】:

    • 01 - 任何数字也应该是有效的
    • 嗨 Stanislav,我在tools.netshiftmedia.com/regexlibrary 中尝试了你的正则表达式,你可以看到它仍然接受 1.4、2.1,其中我不想接受浮点数。实际上它要求输入数量..所以数量不应该像浮动、字母、负数或000、00等
    • 在它周围加上一个 ^ 和 $(匹配字符串的开头和结尾),它应该可以工作! ^[0]*[1-9][0-9]*$
    • @user3436400 java regex 不接受此模式的浮点值。如果您使用的不是 java,而是 javascript,则必须在其中添加 ^ 和 $ 以确定字符串的开始和结束
    • 嘿,谢谢 Stanislav 和 Fievel,这行得通!是的,我使用的是 javascript。再次感谢。
    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2012-09-20
    相关资源
    最近更新 更多