Javascript函数涉及使用正则表达式

时间:2010-02-14 03:08:46

标签: javascript regex

我允许用户通过表单字段输入框的尺寸。允许的值是:

  1. 正整数
  2. 必须以px或%
  3. 结尾

    示例有效数字为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){
    }
    

    任何人都可以帮我填写这些辅助功能吗?

1 个答案:

答案 0 :(得分: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
}