如何在javascript中创建动态正则表达式来验证十进制数
How to create Dynamic Regular Expression in javascript to validate decimal number
我必须根据在小数之前和小数之后提供的数字来验证十进制数。假设我有一个函数,它有一个正则表达式,并接受两个参数,分别是小数点前和小数点后的数字。
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,它应该根据这个限制验证no
- 如果我通过了4,2,它应该根据这个限制验证no
如何创建满足上述要求的单个动态正则表达式
在JavaScript中,您有文字语法(/regex/
, {object}
,甚至"string"
),并且您有非文字语法(new RegExp()
, new Object()
, new String()
)。
有了这个,你可以使用非文字版本的regex,它接受字符串输入:
var myRegex = new RegExp("hello", "i"); // -> /hello/i
因此,提供了这个,我们可以创建一个函数来创建一个"动态正则表达式"函数(引号是因为它每次运行时实际上都会返回一个新的正则表达式对象)。
例如: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
相关文章:
- Javascript中的正则表达式验证
- javascript正则表达式验证未按预期工作
- 使用 JavaScript 正则表达式验证每个列表项一个字母的逗号列表
- 在提交时检查正则表达式验证,如果为空,则聚焦所有输入字段
- 如何使用正则表达式验证单字母域名
- Javascript正则表达式验证
- 使用javascript进行正则表达式验证
- 使用正则表达式验证特定范围
- 如何使用正则表达式验证 JavaScript 中的自定义 URL
- 使用正则表达式验证电子邮件地址
- 使用正则表达式验证网址
- 使用正则表达式验证加拿大邮政编码
- javascript 正则表达式验证列表以逗号分隔
- 使用原型进行正则表达式验证
- HTML 正则表达式验证在十进制输入上仅限制一个句点
- 用于 excel 文件上传 jQuery 的正则表达式验证代码
- 两个不同 URL 的正则表达式验证表单
- 正则表达式验证 - 域电子邮件地址
- 正则表达式验证
- 时间格式的 JavaScript 正则表达式验证问题