如何创建正则表达式只接受数字而不是其他任何东西(甚至不是空格)?

时间:2015-05-13 07:03:05

标签: javascript regex regex-negation

我看到了问题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;         
       });
     }
   };
})

提前致谢。

3 个答案:

答案 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)"