angular js input校验只能输入数字和字母 directive写法一则

js代码:
.directive('validateNumberLetter', function () {
return {
require: 'ngModel',
link: function (scope, elm, attrs, ctrl) {
scope.$watch(attrs.ngModel, function(n){
if(!n) return;
var oldName = attrs.validateNumberLetter;
if(oldName !== n){
var reg=/[^A-Za-z0-9]/;
if (n.length) {
if(reg.test(n)){
// it is invalid, return undefined (no model update)
ctrl.$setValidity('validateNumberLetter', false);
return undefined;
}else{
// it is valid
ctrl.$setValidity('validateNumberLetter', true);
return n;
}
}
}
});
}
};
})
html代码:
<div class="form-group-right">
<input required validate-number-letter
     %}
</p>
</div>