JS中Number數據類型正則表達式


最近在練習正則表達式,剛好就順便整理了一份可能會在項目中用到的正則類,以下主要圍繞Number數據類型去整理。

/**
 * Number數據類型正則
 * @author DonnyLiu
 * @version 1.0.0
 * @type {{mnNumber: (function(*, *): RegExp), notZeroNInteger: (function(): RegExp), nDecimal: (function(): RegExp), notZeroPInteger: (function(): RegExp), notNFloat: (function(): RegExp), notZeroNumberTwo: (function(): RegExp), pFloat: (function(): RegExp), notPInteger: (function(): RegExp), notNInteger: (function(): RegExp), nFloat: (function(): RegExp), float: (function(): RegExp), number: (function(): RegExp), notPFloat: (function(): RegExp), decimalNumber: (function(): RegExp), mnsNumber: (function(): RegExp), notZeroNumber: (function(): RegExp), mnDecimal: (function(): RegExp), nNumber: (function(*, *=): RegExp)}}
 */
let regExp = {
    /**
     * 是否為數字
     * @returns {RegExp}
     */
    number: function () {
        let reg = /^[0-9]*$/;
        return reg;
    },
    /**
     * 至少n位或者必須為n位的數字
     * @param n
     * @param is_min
     * @returns {RegExp}
     */
    nNumber: function (n, is_min = false) {
        let regStr = is_min !== false ? '^\\d{'+ n +'}$' : '^\\d{'+ n +',}$';
        let reg = new RegExp(regStr,'g');
        return reg;
    },
    /**
     * 至少m-n位數字
     * @param m
     * @param n
     * @returns {RegExp}
     */
    mnNumber: function (m, n) {
        let reg = new RegExp('^\\d{' + m + ','+ n +'}$','g');
        return reg;
    },
    /**
     * 是否為0和非0開頭的數字
     * @returns {RegExp}
     */
    notZeroNumber: function () {
        let reg = /^(0|[1-9][0-9]*)$/;
        return reg;
    },
    /**
     * 是否為非0開頭的最多帶兩位小數的數字
     * @returns {RegExp}
     */
    notZeroNumberTwo: function  () {
        let reg = /^([1-9][0-9]*)+(.[0-9]{1,2})?$/;
        return reg;
    },
    /**
     * 是否帶有1-2位小數的正數或負數
     * @returns {RegExp}
     */
    decimalNumber: function () {
        let reg = /^(\-)?\d+(\.\d{1,2})?$/;
        return reg;
    },
    /**
     * 是否為正數、負數、和小數
     * @returns {RegExp}
     */
    mnsNumber: function () {
        let reg = /^(\-|\+)?\d+(\.\d+)?$/;
        return reg;
    },
    /**
     * 是否有兩位小數點的正實數
     * @returns {RegExp}
     */
    nDecimal: function () {
        let reg = /^[0-9]+(.[0-9]{2})?$/;
        return reg;
    },
    /**
     * 是否有1-3位小數點的正實數
     * @returns {RegExp}
     */
    mnDecimal: function () {
        let reg = /^[0-9]+(.[0-9]{1,3})?$/;
        return reg;
    },
    /**
     * 是否為非0的正整數
     * @returns {RegExp}
     */
    notZeroPInteger: function () {
        // 或者 ^([1-9][0-9]*){1,3}$ 或者 ^\+?[1-9][0-9]*$
        let reg = /^[1-9]\d*$/;
        return reg;
    },
    /**
     * 是否為非0的負整數
     * @returns {RegExp}
     */
    notZeroNInteger: function () {
        // 或者 ^-[1-9]\d*$
        let reg = /^\-[1-9][]0-9"*$/;
        return reg;
    },
    /**
     * 是否為非負整數
     * @returns {RegExp}
     */
    notNInteger: function () {
        // 或者 ^[1-9]\d*|0$
        let reg = /^\d+$/;
        return reg;
    },
    /**
     * 是否為非正整數
     * @returns {RegExp}
     */
    notPInteger: function () {
        // 或者 ^((-\d+)|(0+))$
        let reg = /^-[1-9]\d*|0$/;
        return reg;
    },
    /**
     * 是否為非負浮點數
     * @returns {RegExp}
     */
    notNFloat: function () {
        // 或者 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
        let reg = /^\d+(\.\d+)?$/;
        return reg;
    },
    /**
     * 是否為非正浮點數
     * @returns {RegExp}
     */
    notPFloat: function () {
        // 或者 ^(-([1-9]\d*\d.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
        let reg = /^((-\d+(\.\d+)?)| (0+(\.0+)?))$^/;
        return reg;
    },
    /**
     * 是否為正浮點數
     * @returns {RegExp}
     */
    pFloat: function () {
        // 或者 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
        let reg = /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/;
        return reg;
    },
    /**
     * 是否為非負浮點數
     * @returns {RegExp}
     */
    nFloat: function () {
        // 或者 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
        let reg = /^([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$/;
        return reg;
    },
    /**
     * 是否為浮點數
     * @returns {RegExp}
     */
    float: function () {
        // 或者 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
        let reg = /^(-?\d+)(\.\d+)?$/;
        return reg;
    },
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM