正则表达式 - 在AngularJS指令中包含空格

时间:2015-05-19 06:42:31

标签: javascript regex angularjs

我想允许用户仅在此输入字段中输入字母数字和空格,但我似乎无法使其工作。

我可以输入字母数字,但无法输入空格。

我尝试使用/[^0-9a-zA-Z\.\\s]/g

/[^0-9a-zA-Z \.]/g

/[^\w ]/g但没有一个有效。请帮忙。

app.directive('onlyAlphabets', function() { 
      return {
        require: '?ngModel',
        link: function(scope, element, attrs, ngModelCtrl) {
          if(!ngModelCtrl) {
            return; 
          }

          ngModelCtrl.$parsers.push(function(val) {
            if (angular.isUndefined(val)) {
                var val = '';
            }
            var clean = val.replace(/[^0-9a-zA-Z\.]/g, '');
            var decimalCheck = clean.split('.');

            if(!angular.isUndefined(decimalCheck[1])) {
                decimalCheck[1] = decimalCheck[1].slice(0,2);
                clean =decimalCheck[0] + '.' + decimalCheck[1];
            }

            if (val !== clean) {
              ngModelCtrl.$setViewValue(clean);
              ngModelCtrl.$render();
            }
            return clean;
          });

          element.bind('keypress', function(event) {
            if(event.keyCode === 32) {
              event.preventDefault();
            }
          });
        }
      };
    })

1 个答案:

答案 0 :(得分:1)

仅允许使用字母数字和空格。

/^[A-Za-z0-9\s]+$/m
  • ^开始
  • A-Z大写字母。
  • a-z小写字母。
  • 0-9位数。
  • \s空间
  • [A-Za-z0-9\s]+因此上述内容将重复一次或多次。

从输入字符串

中删除除空格之外的非字母数字字符
val.replace(/[^0-9a-zA-Z\s]/g, '');