最近在練習正則表達式,剛好就順便整理了一份可能會在項目中用到的正則類,以下主要圍繞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; }, };