【发布时间】:2015-05-13 07:03:04
【问题描述】:
我看到了Regex for accepting only numbers 的问题。但这不是我想要的。
我的正则表达式接受除数字以外的任何内容并将其替换为 null。像 /[^0-9]/g 然后替换为 null 它适用于所有人,空格除外。正则表达式不允许来自 a-z 或 A-Z 的任何字符或任何特殊字符。但它允许在之前或之后或中间输入空间。
var transformedInput = inputValue.replace(/[^0-9]/g, '');
在这里,它接受除数字以外的所有字符,并将其替换为 '' 空白。但是,当我添加 space 时,它不会被替换为空白。
例如:如果我输入“a”,它将被 null 替换。
但是,如果我输入 <space>1 或 <space> 或 1<space> 它接受而不是用空替换空格。以下是验证:
customValidationDirective.directive('numbersOnly', function(){
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
if (inputValue == undefined) return ''
var transformedInput = inputValue.replace(/[^0-9]/g, '');
if (transformedInput!=inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
})
提前致谢。
【问题讨论】:
-
应该可以...但可以简化为
/\D/g,如' 1'.replace(/\D/g, '') -
那个正则表达式应该允许字母,或者任何不是数字的东西。
-
这应该可以工作 /^[0-9]+$/gi
-
\D 或 \d 不接受除空格以外的任何内容。 :P 不是偶数。我知道为什么。我也试过了。
-
您的代码工作正常。测试于jsfiddle
标签: javascript regex regex-negation