如何在javascript中创建动态正则表达式来验证十进制数

时间:2015-05-30 03:46:33

标签: javascript regex

我必须根据小数点前和小数点后面提供的数字来验证十进制数。 假设我有一个具有正则表达式的函数,并将两个参数作为小数点前的数字和小数点后的数字。

function validateDecimalNo(digitBeforeDec,digitAfterDec){
          //here i need to write the regular expression to validate the  decimal no based on the inputs.
            }
  • 如果我通过2,3,则应根据此限制检查小数否
  • 如果我通过10,6,则应根据此限制验证否
  • 如果我通过4,2,则应根据此限制验证否

如何创建单个动态正则表达式以满足上述要求。

2 个答案:

答案 0 :(得分:1)

在JavaScript中,您有文字语法(/regex/{object},甚至"string"),并且您拥有非文字语法(new RegExp(),{{1 },new Object())。

提供此功能后,您可以使用非文字版本的regex,它采用字符串输入:

new String()

所以,这提供了,我们可以创建一个功能,创建一个动态正则表达式"函数(引用因为它实际上每次运行时都返回一个新的正则表达式对象)。

例如:

var myRegex = new RegExp("hello", "i"); // -> /hello/i

因此,使用此示例函数,我们可以像这样使用它:

var getRegex = function(startingSym, endingSym, optional){
  return new RegExp(startingSym + "(.+)" + endingSym, optional)
}

答案 1 :(得分:0)

为什么要使用正则表达式?只需直接查看号码即可。

function make_decimal_validator(digitBeforeDec,digitAfterDec) {
    return function(no) {
        var parts = no.split('.');
        if (parts.length !== 2) throw "Invalid decimal number";
        return parts[0].length === digitBeforeDec && parts[1].length === digitAfterDec;
    };
}

制作验证码:

var validator23 = make_decimal_validator(2, 3);
validator23('12.345') // true