【问题标题】:How to get the following pattern via regex in AngularJS?如何通过 AngularJS 中的正则表达式获得以下模式?
【发布时间】:2016-02-04 07:40:43
【问题描述】:

我正在使用 AngularJS 在我的表单中进行一些验证。在某些领域,我只需要接受数字。范围是从一位数到 n 位数。我打算在 AngularJS 的ngPattern 属性中使用正则表达式。

我需要使用正则表达式完成以下事情:

  • 如果是单个数字,则不应为 0。可以是 1 到 9 之间的任何值。
  • 如果是多位数字,则从 0 到 9 的所有数字都可以用于并非所有数字都为 0 的任何位置,即输入的总值不应为 0

我正在努力寻找可以接受这种模式的正则表达式。是否可以使用正则表达式接受这种模式?早些时候我在想,至少最后一个数字应该是非零数字,这样像 0000 这样的条目是不可能的,并且必须是 000x,其中 x 是从 1 到 9 的任何值。但是这个逻辑是有缺陷的,因为它不允许人们以 10 的倍数输入值。

如何实施此验证?

【问题讨论】:

  • 你能展示你已经尝试过的代码吗?
  • @DaanvanHulst,我知道这是错误的,但这是我正在尝试的:^([1-9]|[0-9]*)$。这也是我从 Stackoverflow 的答案中获取的,并对其进行了一些修改

标签: javascript angularjs regex html-validation


【解决方案1】:

我想,这就是你要找的那个:

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

它匹配任何包含至少一个非零数字的数字。

【讨论】:

  • 嘿工作得很好。你能告诉我你的正则表达式和 ^([1-9]|[1-9][0-9]*)$ 之间的区别吗?两者都给出相同的结果。只是想确定验证。
  • 你的不匹配任何以 0 开头的数字。你的匹配一个非零数字或任何以非零开头的数字。我的正则表达式匹配任何包含至少一个非零数字的数字。
  • 非常感谢!!非常有用的解释和答案
【解决方案2】:

更好的答案是:

^(([1-9])|(0?([1-9]{1})[0-9]*))$

这与上面基本相同,但它也允许 01 - 09(当然还有 01[##]),具体取决于您的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2020-07-24
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多