AngularJs中数字的正则表达式

时间:2016-08-07 08:52:02

标签: 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="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 :(得分:3)

所有3个组合:

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

<强>描述

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

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

答案 1 :(得分:0)

你试图在ng-pattern中使用多个正则表达式,使用管道将它们分开 - 这是无效的。正如答案here中所建议的那样,您应该实现自定义指令(ng-phone-number?)或将多个表达式合并为一个模式。

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

答案 2 :(得分:0)

  

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