2010-02-14 30 views
1

我允许用户通过表单域输入框的尺寸。允许值是:涉及使用正则表达式的Javascript函数

  1. 正整数
  2. 必须以像素或百分比结束

样品有效的数字是300像素或70%

此外,我希望把一些额外的验证逻辑:

如果输入值以百分比表示,则该数字必须位于0> 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){ 
} 

谁能帮我填写这些辅助功能?

回答

2

你想要的正则表达式为:

var r = new RegExp("^\\s*(\\d+(?:\\.\\d+)?)\\s*(px|%)?\\s*$"); 

该表达式表示:

  • 允许开头和结尾的空白(\s);
  • 该数字是一个或多个数字,可选后跟一个句点和一个或多个数字;
  • 单位可以是“px”,“%”或省略。

您需要手动检查输入的号码。

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 
} 
+0

谢谢Cletus,我修改了代码并成功地测试了它 – 2010-02-14 14:14:19

相关问题