我允许用户通过表单字段输入框的尺寸。允许的值是:
示例有效数字为300px或70%
此外,我想提出一些额外的验证逻辑:
如果输入的值是百分比,那么该数字必须位于0&gt;范围内。 x <= 100
如果输入的数字是px,我希望能够检查硬编码的最小值和最大值。
我的正则表达式知识很少,因为我已经使用了很多年了。
我想要编写一组这样的辅助函数:
// returns true if value ends in px or % [with no spaces], false otherwise
function is_scale_valid(value){
}
//returns 'px', '%' or undefined
function get_scale_type(value){
}
// called after is_scale_valid, to ensure we are dealing with
// a +ve integer that falls in desired range. This function
// strips away the 'scale' part of the value and only looks
// at the number
function is_valid_number(value, scaletype, valid_min, valid_max){
}
任何人都可以帮我填写这些辅助功能吗?
答案 0 :(得分:2)
您想要的正则表达式是:
var r = new RegExp("^\\s*(\\d+(?:\\.\\d+)?)\\s*(px|%)?\\s*$");
此表达式表示:
\s
); 您需要手动检查输入的数字。
var match = r.exec("93px");
var number = parseFloat(match[1]);
var symbol = match[2];
if (symbol == "px") {
// validate number as a pixel
} else if (symbol == "%") {
// evaluate as percentage
} else {
// no symbol was entered
}