正则表达式允许一个特殊字符(:)和数字和字母只
我使用AngularJS指令进行我的表单输入验证。有没有办法让我的正则表达式只允许一个特殊字符(:)以及数字和字母。这是我在stackoverflow上找到的指令。正则表达式允许一个特殊字符(:)和数字和字母只
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;
});
}
}
});
我试着在最后添加冒号,但我无法达到我的解决方案。
使用.replace(/^([^:]*:)|\W/g, function($0,$1) { return $1 ? $1.replace(/\W+/g,'')+':' : ''; })
而不是.replace(/\W/gi, '')
请参见下面的演示:
var s = "(*a word : 156,567-354 *)";
console.log(s.replace(/^([^:]*:)|\W/g, function($0,$1) { return $1 ? $1.replace(/\W+/g,'')+':' : ''; }));
的/^([^:]*:)|[^\w\s]/g
正则表达式匹配并捕捉到集团其他1个0+字符比:
和:
,OR将匹配任何不是单词或空白的字符。如果组1匹配,则从字符和空白字符以外的字符中除去全部内容,并且添加:
,否则删除与[^\w\s]
匹配的字符。
我不想太空白。有没有办法,我可以做到这一点 – Praveen
你想删除所有空白?我编辑了答案。主要点在于用'\ W'替代'[\ w \ s]'作为'\ W'匹配除字词之外的任何内容,而'[^ \ w \ s]'匹配除字之外的任何字符,一个空白字符。 –
尝试'.replace(/ ^([\:\] \ :) | [^ \ w \ s]/g,function($ 0,$ 1){return $ 1?$ 1.replace(/ [^ \ w \ s ] +/g,'')+':':'';})''而不是'.replace(/ [^ \ w \ s]/gi,'') –