角度 - 第一个数字的正则表达式不为零,但允许单个零

时间:2015-03-27 01:07:55

标签: regex angularjs

我希望输入元素允许以下两个条件之一:

  • 可以输入单个零
  • 可输入最多9位数的数字,但第一位数不应为零

我写了这个正则表达式(解决方案适用于在线正则表达式测试人员):

/(^0$)|(^[1-9]\d{0,8}$)/

但是当我在Angular中的ng-pattern中使用它时,它不起作用。 这是我的掠夺者例子:

http://plnkr.co/edit/iDQ7ly8ypJ3UmN5A0hJw?p=preview

不确定交替是否正在解决问题,或者我弄乱了正则表达式。

更新:似乎type =“number”导致问题。不幸的是,我需要在我的代码中使用它,所以我正在寻找与type =“number”一起使用的解决方案。

1 个答案:

答案 0 :(得分:2)

这对你有用。我做了以下事情:

  • 取出type="number"
  • form一个名字。
  • input一个名字。
  • 分别通过名称引用forminput,而不是idng-model值。

它将值转换为封面下的数字,剥离前导零并将文本转换为0等。就我所知,name是访问它的正确方法。

<form name="myForm">
    <input name="myNumberField" ng-model="myNumber" ng-pattern="/(^0$)|(^[1-9]\d{0,8}$)/" required/>
    <span ng-show="myForm.myNumberField.$error.pattern">Invalid pattern</span>
</form>

Here is a plunker for it.