Regex 角度中的正则表达式-第一个数字不是零,但允许单个零
我想要一个输入元素,它允许两个条件之一:Regex 角度中的正则表达式-第一个数字不是零,但允许单个零,regex,angularjs,Regex,Angularjs,我想要一个输入元素,它允许两个条件之一: 可以输入单零 最多可输入9位数字,但第一位数字不应为零 我写了这个正则表达式(解决方案适用于在线正则表达式测试人员): 但当我用它在ng模式中的角度,它不工作。 以下是我的plunker示例: 不确定是交替造成了问题,还是我弄乱了正则表达式 更新:似乎type=“number”导致了问题。不幸的是,我需要在代码中包含这一点,因此我正在搜索使用type=“number”的解决方案。这应该适合您。我做了以下工作: 取出type=“number” 给表
- 可以输入单零
- 最多可输入9位数字,但第一位数字不应为零
更新:似乎type=“number”导致了问题。不幸的是,我需要在代码中包含这一点,因此我正在搜索使用type=“number”的解决方案。这应该适合您。我做了以下工作:
- 取出
李>type=“number”
- 给
一个名称李>表单
- 为
输入提供了一个名称
- 分别通过名称而不是
和id
值引用ng model
和表单
input
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>
无效模式
fyi,您不需要任何括号:
/^0$| ^[1-9]\d{0,8}$/
或者您可以/^(0 |[1-9]\d{0,8}$/
您是对的,没有进行测试,感到沮丧:)但它仍然不起作用。例如,它接受01作为有效模式。这会引起问题吗?对我来说很好。。。我仍然可以在文本框中键入所有类型的字符,但它不会将内容转换为封面下的数字。无论如何,您的正则表达式验证应该足够了。我添加了一个名称,这很重要,因为我无法通过ng模型访问它。这两个更改都是必需的。如果您将type=“number”添加到代码中,它仍然有效吗?因为我已经尝试了你的例子和我的例子,但是type=“number”不起作用。不,这是我的观点@MarkoTošIć。我的示例不适用于type=“number”
。这就是为什么我把它扔掉了。我认为没有办法让它与type=“number”
一起工作。在angular有机会检查正则表达式之前,浏览器将尽其所能将文本框中的值转换为数字。
<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>