Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Javascript AngularJs中数字的正则表达式_Javascript_Angularjs_Regex - Fatal编程技术网

Javascript AngularJs中数字的正则表达式

Javascript AngularJs中数字的正则表达式,javascript,angularjs,regex,Javascript,Angularjs,Regex,我想在AngularJs中使用正则表达式来接受以下三条语句: 09344542525 -> 11 length integer that start with 09 02144532363 -> 11 length integer that start with 021 44532363 -> 8 length integer 这是我的HTML: <div class="container co-operate" ng-controller="cooperation

我想在AngularJs中使用正则表达式来接受以下三条语句:

09344542525 -> 11 length integer that start with 09

02144532363 -> 11 length integer that start with 021

44532363 -> 8 length integer
这是我的HTML

<div class="container co-operate" ng-controller="cooperationController">
    <form novalidate name="cooperationForm" class="signinform">
        <div class="form-group inner-addon right-inner-addon">
            <label class="form-label control-label"></label>
            <input ng-model="restaurantInformation.tel" type="text" name="tel" id="tel" placeholder="phone number"
               ng-pattern="mobRegEx || prePhoneRegEx || phoneRegEx" class="form-control default-input singleline-input" required />
            <span class="form-icon icon icon-avatar"></span>
        </div>
        <p ng-show="cooperationForm.tel.$error.pattern" style="color: red">Wrong number format</p>
    </form>
</div>
实际上,当我的输入是脏的并且我测试整数时,错误段落总是显示错误


有任何修改正则表达式的建议吗?

您试图在
ng模式中使用多个正则表达式,方法是使用管道将它们分开,这是无效的。正如回答中所建议的,您应该实现一个自定义指令(
ng phone number
?)或将多个表达式组合成一个模式

使用指令可能是最容易维护的方法。

三者结合起来:

/^(?:0(?:21|9[0-9]))?[0-9]{8}$/
说明

  • ^
    匹配字符串的开头
  • (?:
    )?
    是可选的组匹配
    • 0(?:21 | 9[0-9])
      literal
      021
    • 09
      和另一个数字
  • [0-9]{8}
    8位以上
  • $
    也匹配字符串的结尾

请注意,我添加了避免匹配子字符串

var regExp=/(+09 | 021 | 44532363)\d{1,12}/g; var result=string.match(regExp); console.log(结果)


我已经完成了我的问题。我的答案仍然有效;实现一个自定义指令,根据任何正则表达式模式测试输入。
/^(?:0(?:21|9[0-9]))?[0-9]{8}$/