Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 角度中的正则表达式-第一个数字不是零,但允许单个零_Regex_Angularjs - Fatal编程技术网

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

Regex 角度中的正则表达式-第一个数字不是零,但允许单个零,regex,angularjs,Regex,Angularjs,我想要一个输入元素,它允许两个条件之一: 可以输入单零 最多可输入9位数字,但第一位数字不应为零 我写了这个正则表达式(解决方案适用于在线正则表达式测试人员): 但当我用它在ng模式中的角度,它不工作。 以下是我的plunker示例: 不确定是交替造成了问题,还是我弄乱了正则表达式 更新:似乎type=“number”导致了问题。不幸的是,我需要在代码中包含这一点,因此我正在搜索使用type=“number”的解决方案。这应该适合您。我做了以下工作: 取出type=“number” 给表

我想要一个输入元素,它允许两个条件之一:

  • 可以输入单零
  • 最多可输入9位数字,但第一位数字不应为零
我写了这个正则表达式(解决方案适用于在线正则表达式测试人员):

但当我用它在ng模式中的角度,它不工作。 以下是我的plunker示例:

不确定是交替造成了问题,还是我弄乱了正则表达式


更新:似乎type=“number”导致了问题。不幸的是,我需要在代码中包含这一点,因此我正在搜索使用type=“number”的解决方案。

这应该适合您。我做了以下工作:

  • 取出
    type=“number”
  • 表单
    一个名称
  • 输入提供了一个名称
  • 分别通过名称而不是
    id
    ng model
    值引用
    表单
    input
它将值转换为封面下的数字,去掉前导零并将文本转换为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>

无效模式

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>