我已搜索了几个小时但无法找到,请帮忙。我需要一个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中组合成一个吗?
谢谢。
答案 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"));