我正在尝试使用replace()
验证字段。为此,我需要接受1到999之间的值。我尝试了以下正则表达式,但由于它不支持"10"
或"100"
,因此无法正常工作
正则表达式:/[^1-9]/g
码:
function fromUser(text) {
if (text) {
var transformedInput = text.replace(/[^1-9]/g, '');
if (transformedInput.length > 3) {
transformedInput = text.substring(0, 3);
}
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
我需要接受1到999之间的值。
谢谢。
最佳答案
您可以使用^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$
这样的表达式来实现此目的:
let str = "1002113320400";
isValidNumber = str => !!str.match(/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$/);
console.log(isValidNumber("0")); //false
console.log(isValidNumber("00")); //false
console.log(isValidNumber("000")); //false
console.log(isValidNumber("9990")); //false
console.log(isValidNumber("10")); //true
console.log(isValidNumber("100")); //true
console.log(isValidNumber("999")); //true