簡體   English   中英

如何在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,則應按照此限制驗證否
  • 如果我通過4,2,則應按照此限制驗證否

如何創建單個動態正則表達式來滿足上述要求。

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM