【问题标题】:How to check the given text doesnot contain full zero in ng-pattern?如何检查给定文本在 ng-pattern 中不包含全零?
【发布时间】:2015-07-24 11:07:53
【问题描述】:

我需要检查给定的输入文本在 ng-pattern 中不包含完整的 zeor。 例如我的 I/p 是:00002210000 它应该接受如果我的 I/p 是:0000000000 它不应该接受它应该抛出一个错误。

【问题讨论】:

  • 将其转换为整数并检查是否 === 0 ?

标签: angularjs


【解决方案1】:

使用 javascript match()

if (!myString.match(/(0*[1-9]+0*)+/) {
    alert("Invalid string!");
};

以上要求输入至少有一个非零数。这是一个按要求使用 ng-pattern 演示的小提琴:

http://jsfiddle.net/HB7LU/15632/

<input ng-model="myText" ng-pattern="/^(0*[1-9]+0*)+$/" type="text" />

【讨论】:

  • 我猜只有&lt;input ng-pattern="/^[1-9]+$/" type="text"&gt; 可以在那里工作。
  • 谢谢Fissio。我的问题陈述是它也可以接受零,但我的整个文本不应该有零。 (即)如果我的输入是 00000 它应该抛出错误,如果我的输入是 0000001 它应该接受
  • 是的,这正是它所做的——只要你输入一个非零数字,它就可以验证。
  • 但是我可以输入零,我的号码应该至少包含一个非零数字。我的输入可以是 10000,01200,00010,01000,00010 它应该接受给定的输入(最大长度为 30)。如果我的输入是 0000000000 它应该抛出错误。
  • 是的,实际上,我注意到了另一个错误 - 检查更新的小提琴(希望是)完全工作的例子,jsfiddle.net/HB7LU/15632
【解决方案2】:

最好将正则表达式放入控制器 $scope 变量中,并将其绑定到 ng-patter.SEE THIS

 $scope.regex = /([0]+[1-9]+[0]+)?$/;
    ng-pattern="regex";

或者,

ng-pattern="^([0]+[1-9]+[0]+)?$"

【讨论】:

  • 感谢 Ved.. 但如果我在其抛出错误之间给出任何数字,它会接受全零。 (即)如果我输入我的输入为 000000 它应该会抛出一个错误。如果我输入我的输入为 0000001201 它应该接受。
  • 哦.. 我错过了。我以为你只需要全零..等等..我正在更新。
【解决方案3】:

您可以使用正则表达式模式来检查输入是否包含至少一个数字:

ng-pattern=".*[0-9].*"

RegEx 来自Regular Expression For At Least One Number

【讨论】:

    【解决方案4】:

    试试这个正则表达式:ng-pattern="/^(?!0+$)\d{10}$/" 使用前瞻。

    【讨论】:

    • 感谢 ankit,但如果输入数字则会引发错误。如果我使用你的模式
    • 哦,我的错,我错过了开头和结尾的“/”。
    猜你喜欢
    • 2016-03-29
    • 2013-12-12
    • 2020-02-25
    • 2018-04-15
    • 1970-01-01
    • 2011-09-03
    • 2011-02-21
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多