我想在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}';
.
.
.
}
实际上,当我的输入是脏的并且我测试整数时,错误段落总是显示错误。
修改正则表达式的任何建议?
答案 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(结果)