Javascript正则表达式匹配数字零或任何大于零的整数

时间:2017-01-16 00:50:38

标签: javascript regex expression

我已搜索了几个小时但无法找到,请帮忙。我需要一个Javascript正则表达式来验证包含数量值的文本字段。该值可以是零或任何大于零的整数。数字不能以零开头,除非它们是......零。如果数量的开始,中间或结尾有任何空格,那么它不应该匹配"字符串"。

换句话说:" 0" < - 应该匹配。 " 467" < - 应该匹配。 " 098" < - 不应该匹配。 " 1 3" < - 不应该匹配。

到目前为止,我必须在Javascript中使用两个Reg Exps和OR。这是工作。这是我的代码:

function qtyIsValid(strQty){
    var isValid;
    var reg1 = new RegExp('^0{1}$'); // <-- This matches a single ZERO and fails if any whitespace anywhere
    var reg2 = new RegExp('^[1-9]+$'); // <-- This matches any number greater than zero and fails if any whitespace anywhere

    if ( reg1.test(strQty) || reg2.test(strQty) ){
            isValid = true;
    }else{
            isValid = false;
        }
return isValid;  
}

但是这两个正则表达式可以在Javascript中组合成一个吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用它,例如:

r = /^(0|[1-9]\d*)$/
console.log("0".match(r));
console.log("467".match(r));
console.log("098".match(r));
console.log("1 3".match(r));

答案 1 :(得分:1)

/^(0+|[1-9]\d*)$/任何字符串,它只是0的序列,或者包含不等于0且不以0开头的数字。

console.log("0: ", /^(0+|[1-9]\d*)$/.test("0"));
console.log("000: ", /^(0+|[1-9]\d*)$/.test("000"));
console.log("055: ", /^(0+|[1-9]\d*)$/.test("055"));
console.log("123: ", /^(0+|[1-9]\d*)$/.test("123"));
console.log("1 3: ", /^(0+|[1-9]\d*)$/.test("1 3"));