[英]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.