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;
    },
};
posted @ 2021-01-10 17:46  不进腾讯不改名  阅读(1556)  评论(0)    收藏  举报