Angularjs Regex只允许特殊字符(:)和数字及字母
我正在使用AngularJS指令进行表单输入验证。是否有办法使我的正则表达式只允许一个特殊字符(:)以及数字和字母。这是我在stackoverflow上找到的指令Angularjs Regex只允许特殊字符(:)和数字及字母,angularjs,regex,angularjs-directive,Angularjs,Regex,Angularjs Directive,我正在使用AngularJS指令进行表单输入验证。是否有办法使我的正则表达式只允许一个特殊字符(:)以及数字和字母。这是我在stackoverflow上找到的指令 myapp.directive('noSpecialChar', function() { return { require: 'ngModel', restrict: 'A', link: function(scope, element, attrs, mode
myapp.directive('noSpecialChar', function() {
return {
require: 'ngModel',
restrict: 'A',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function(inputValue) {
if (inputValue == null)
return ''
cleanInputValue = inputValue.replace(/[^\w\s]/gi, '');
cleanInputValue = cleanInputValue.toUpperCase();
if (cleanInputValue != inputValue) {
modelCtrl.$setViewValue(cleanInputValue);
modelCtrl.$render();
}
return cleanInputValue;
});
}
}
});
我尝试在末尾添加冒号,但无法找到解决方案。根据您当前的代码,您希望替换所有不是字母、数字或空格字符的内容 也就是说,regex
[^\w\s:][/code>应该可以工作
\w
=a-z,a-z,0-9
\s
=空白字符\r\n\t\f\v
我甚至会考虑删除<代码> <代码>,因为这将允许输入中的空格,除非是你的意图。
使用<代码>。替换(/^([^:]:)\/g,函数(0美元,1美元){返回1美元$$。替换(/\W++/g,‘’)++::’‘;’})<代码> >代替<代码>。替换(/\W/Gi,‘’)< /Cord>< /P>
请参见以下演示:
var s=“(*一个字:156567-354*)”;
log(s.replace(/^([^::*:)|\W/g,函数($0,$1){return$1?$1.replace(/\W+/g,,)+:':':'';}))代码>尝试.replace(/^([^::]*:)|[^\w\s]/g,函数($0,$1){返回$1?$1。replace(/[^\w\s]+/g',)+':':'';})而不是。replace(/[^\w\s]/gi',)
不允许使用空格。我只想让冒号与\w=a-z,a-z,0-9Ok一起被允许,然后您只想使用[^\w:][/code>\s
与空白字符匹配。我不想要空白字符。有什么方法可以做到吗?你想删除所有空白吗?我编辑了答案。要点是将[^\w\s]
替换为\w
,因为\w
匹配除单词字符以外的任何字符,而[^\w\s]
匹配除单词和空白字符以外的任何字符。