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

如何在javascript中创建动态正则表达式来验证十进制数,javascript,regex,Javascript,Regex,我必须根据小数点前和小数点后提供的数字验证小数点。 假设我有一个函数,它有一个正则表达式,取两个参数作为小数点前的数字和小数点后的数字 function validateDecimalNo(digitBeforeDec,digitAfterDec){ //here i need to write the regular expression to validate the decimal no based on the inputs. } 如果我

我必须根据小数点前和小数点后提供的数字验证小数点。 假设我有一个函数,它有一个正则表达式,取两个参数作为小数点前的数字和小数点后的数字

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,它将根据此限制验证否

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

在JavaScript中,您有文字语法(
/regex/
{object}
,甚至是
“string”
),还有非文字语法(
new RegExp()
new object()
new string()

提供了此选项后,您可以使用非文字版本的regex,它接受字符串输入:

var myRegex = new RegExp("hello", "i"); // -> /hello/i
因此,我们可以创建一个创建“dynamic regex”函数的函数(引用,因为每次运行时它实际上都返回一个新的regex对象)

例如:

var getRegex = function(startingSym, endingSym, optional){
  return new RegExp(startingSym + "(.+)" + endingSym, optional)
}
因此,通过这个示例函数,我们可以这样使用它:

var testing = getRegex("ab", "cd", "i");
console.log(testing);
// Output:
/ab(.+)cd/i

为什么要使用regexp?直接查一下号码就行了

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

你能提供一个以上的样品吗?这将是非常有用的,因为我是新的bibe注册expression@user1991222是 啊这是一个关于如何创建动态regexp的很好的解释,但是它应该在OP的问题的上下文中说明如何创建动态regexp。