AngularJS - 不应以 space 开头和结尾且不应包含双引号 (") 的正则表达式

AngularJS - regular expression which should not start & end with space and should not consist double quotation (")

我写了 ng-pattern 不以 space 开始和结束。 并尝试匹配 $watch.

中的双引号

但它不起作用。 ng-pattern 也不起作用

我的 ng 模式是:

<input type="text" class="form-control" ng-model="wifiResult.ssid" 
     name="ssid"
     ng-class="{'inputError' : errorMsg}"
     ng-minlength="1"
     ng-maxlength="32"
     ng-pattern="/^[^\s]+(\s+[^\s]+)*$/"
     required >

$watch 在 JS 中是:

$scope.$watch('wifiResult.ssid', function(scope){
        var regexToRestrict = /^["]+$/;

        if(scope){
            var pressChar       = scope.slice(-1);
            if(pressChar.match(regexToRestrict)){
                scope   = scope.slice(0,-1); // try to replace " to blank
            }
            else{
                console.log('not matched');
            }
        }       
        else{
            console.log('no scope');
        }
    });

还有其他方法吗?

提前致谢!

您可以在 html 中将您的正则表达式更改为这样 ng-pattern='/^[^\\./:*?\"<>|][^\\/:*?\"<>|]{0,254}$/' 以防止用户在输入中输入 (") 并且表单可能会抛出错误,指出它是无效输入。

In angular 默认情况下,ng-trim 设置为 true,因此在分配给 ng-model.

之前删除用户输入周围的任何空格

您不需要观察者,除非并且直到您希望每次用户尝试在输入中输入某个值时输入值都是 (") 免费的 field.It 每次都是不必要的验证操作用户改变了一些东西。