我正在尝试使用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

09-28 06:59