[英]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.
}
如何創建單個動態正則表達式來滿足上述要求。
在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.