Angularjs Regex只允许特殊字符(:)和数字及字母

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

我正在使用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;
            });
        }
    }
});

我尝试在末尾添加冒号,但无法找到解决方案。

根据您当前的代码,您希望替换所有不是字母、数字或空格字符的内容

也就是说,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]
匹配除单词和空白字符以外的任何字符。