【问题标题】:Regular Expression allow null or 1 to 9 digit正则表达式允许 null 或 1 到 9 位
【发布时间】:2016-11-02 18:30:14
【问题描述】:

我尝试使用模式属性验证我的输入数量字段。但是我的正则表达式不起作用。请检查

^(?:[1-9]\d*|)$

请任何人帮助我。我的输入字段应该接受 null 或 1 到 9 位数字。不接受 0 或任何字母和符号。

AngulrJS 代码:

<input class="form-control" name="quantity" ng-model="quoteList.quantity" placeholder="Quantity" required="" min="1" ng-pattern="/^(?:[1-9]\d*|)$/">
<div ng-show="userForm.$submitted || userForm.quantity.$touched">
    <span ng-show="userForm.quantity.$error.pattern" class="text-danger">Not valid number!</span>
</div>

【问题讨论】:

  • 你想让你的正则表达式只匹配一个单个数字还是多个数字?
  • 多个数字
  • 你想要一个有 1 到 9 个数字的数字,而不是一个只包含数字 1-9 的数字(即不包括 0)
  • 您原来的 ^(?:[1-9]\d*|)$ 正在工作 - 它不允许 01请说明您对当前解决方案有什么问题。 “不工作”不是正确的问题描述,因为它匹配10,不匹配01,还匹配一个空字符串。

标签: angularjs regex


【解决方案1】:

如果你想匹配多个号码1-9 使用:

^[1-9]*$

这个正则表达式在检查NULL 值方面做得很好。如果你还想允许空值,那么你应该在你的控制器中明确地包含这个逻辑,即

form.input.$valid || quoteList.quantity === null

更新:

看来您真正想问的是如何验证一个1-9 开头 后跟任何 数字的数字。如果是这样,那么试试这个正则表达式:

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

同样,您可以在控制器中检查 null 值,也可以允许它们。

【讨论】:

  • 是的,至少在某些引擎中是这样。您使用什么工具/语言?
  • 我正在使用 AngularJS
  • 更新了我的问题。请检查
  • 感谢您的回答:)
  • 抱歉耽搁了。如果我使用你的表达方式,我会遇到另一个问题。除了 0 之外,所有的都工作正常。例如:10、101、100 等。请帮助我。
【解决方案2】:

您可以自行查看:

https://regex101.com^(?:[1-9]\d*|)$

【讨论】:

    【解决方案3】:
    ^(?:[1-9]*)$
    

    应该够了。

    【讨论】:

    • 你现在不需要括号了 :-)
    • 您能否详细说明为什么它可以作为正确答案?
    • 这是一个简单的正则表达式,我认为不需要详细说明,但如果您仍想学习基础知识basics here
    猜你喜欢
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多