我看到了问题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>
,则不接受null替换空格。以下是验证:
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;
});
}
};
})
提前致谢。
答案 0 :(得分:0)
您可以使用此正则表达式:/[^\d]+/g
。这意味着,只匹配数字而不是其他任何内容,它与/[0-9]+/g
相同。
答案 1 :(得分:0)
最后添加$会解决您的问题,因为它可以避免部分匹配。试试这样的事情。
^[0-9]*$
答案 2 :(得分:0)
JavaScript代码
function NumberOnly(e)
{
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
// control keys
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27) || (key == 32))
return true;
// alphas and numbers
else if ((("abcdefghijklmnopqrstuvwxyz").indexOf(keychar) > -1))
return true;
else
return false;
}
<强> HTML 强>
onkeypress="return NumberOnly(event)"