繁体   English   中英

AngularJs中数字的正则表达式

[英]Regular expression for numbers in AngularJs

我想在接受以下三个语句的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>

角度:

app.controller('cooperationController', function ($scope) {
    $scope.mobRegEx = '/09[0-3][0-9]{8}/';
    $scope.prePhoneRegEx = '/021[0-9]{8}/';
    $scope.phoneRegEx = '[0-9]{8}';
    .
    .
    .
}

实际上,当我的输入很脏并且测试整数时,错误段落始终显示错误。

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

全部3个合计:

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

描述

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

注意,我添加了^$锚,以避免匹配子字符串

您试图通过使用管道将它们分隔开来,从而在ng-pattern使用多个正则表达式-这是无效的。 如答案所示您应该实现一个自定义指令( ng-phone-number ?)或将多个表达式组合为一个模式。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM