使用正则表达式将脚本定义为数字:
function validateTextNumericInRange ( textInputId)
{
var numRegex = /^[\d]+$/;
var textInput = document.getElementById(textInputId);
var valid = true;
if(numRegex.test(textInput.value) == false) {
alert('Value must be a number between 3-48');
valid = false;
}
return valid;
}
需要使用此格式并提供最小/最大范围(现在任意,例如3到48之间)。如何修改此正则表达式以完成并拥有正确的参数?
答案 0 :(得分:10)
我不明白你的问题。你的意思是你想要一个3到48位数的数字,或者数字的值必须在3到48之间吗?
对于后者,您不需要正则表达式:
function validateTextNumericInRange (textInputId) {
var textInput = document.getElementById(textInputId);
var value = parseInt(textInput.value, 10);
return (!isNaN(value) && value >= 3 && value <= 48);
}
更通用的解决方案:
function validateTextNumericInRange(textInputId, min, max) {
var textInput = document.getElementById(textInputId);
var value = parseInt(textInput.value, 10);
return (!isNaN(value) && value >= min && value <= max);
}
要测试一个数字是否在3到48位数之间,您可以使用正则表达式/^[0-9]{3, 48}$/
。
答案 1 :(得分:8)
正则表达式会很难且不灵活,因为你的例子就是:
/^(?:[3-9]|[1-3][0-9]|4[0-8])$/
最好采用Vivins的解决方案。
答案 2 :(得分:3)
function isInteger(value) {
if ((value.toString()).replace(/^-\d|\d/, "").length == 0) {
return true;
}
return false;
}
function integerInRange(value, min, max) {
if (isInteger(value)) {
if (parseInt(value, 10) >= min && parseInt(value, 10 <= max)) {
return true;
} else {
return false; //not in range
}
} else {
return false; //not an integer
}
}
integerInRange(55, 3, 48); //returns false
integerInRange("55", 3, 48); //returns false
integerInRange(25, 3, 48); //returns true
integerInRange("25", 3, 48); //returns true
在你的情况下你需要这样称呼它
integerInRange(document.getElementById(textInputId).value, 3, 48);
答案 3 :(得分:3)
我不是一个优秀的JavaScript开发人员,但我知道在Java中你可以使用这种语法来测试最小和最大长度:
[1-9][0-9]{2,4}
[1-9][0-9]{min,max}