From 524d464a55cfe3ae91c3a3d86974dc791a6266cf Mon Sep 17 00:00:00 2001 From: paopao <1173381422@qq.com> Date: Tue, 14 Apr 2020 16:21:12 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/eagle.js | 134 ++++++++++++++++++++++++++++++++++++++++ dist/eagle.min.js | 1 + es/NumberPadding.js | 15 +++++ es/StringLength.js | 26 ++++++++ es/index.js | 7 +++ es/isCellphone.js | 15 +++++ es/isFixedLinePhone.js | 15 +++++ es/isIdCard.js | 15 +++++ es/trim.js | 20 ++++++ es/trimAll.js | 16 +++++ package.json | 2 +- src/NumberPadding.js | 15 +++++ src/StringLength.js | 26 ++++++++ src/index.js | 8 +++ src/index.mjs | 7 +++ src/isCellphone.js | 15 +++++ src/isFixedLinePhone.js | 15 +++++ src/isIdCard.js | 15 +++++ src/trim.js | 20 ++++++ src/trimAll.js | 16 +++++ 20 files changed, 402 insertions(+), 1 deletion(-) create mode 100644 dist/eagle.js create mode 100644 dist/eagle.min.js create mode 100644 es/NumberPadding.js create mode 100644 es/StringLength.js create mode 100644 es/index.js create mode 100644 es/isCellphone.js create mode 100644 es/isFixedLinePhone.js create mode 100644 es/isIdCard.js create mode 100644 es/trim.js create mode 100644 es/trimAll.js create mode 100644 src/NumberPadding.js create mode 100644 src/StringLength.js create mode 100644 src/index.js create mode 100644 src/index.mjs create mode 100644 src/isCellphone.js create mode 100644 src/isFixedLinePhone.js create mode 100644 src/isIdCard.js create mode 100644 src/trim.js create mode 100644 src/trimAll.js diff --git a/dist/eagle.js b/dist/eagle.js new file mode 100644 index 0000000..b855a88 --- /dev/null +++ b/dist/eagle.js @@ -0,0 +1,134 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.Eagle = {})); +}(this, (function (exports) { 'use strict'; + + /** + * @description 在数字前面补`0` + * @version 0.0.1 + * @param {string | number} 数字 + * @param {number} 补充0后的数字长度 + * @return {string} 补充0后的数字 + * @example + * E.NumberPadding(1); // 01 + * E.NumberPadding('2', 3); // 002 + */ + var NumberPadding = function NumberPadding(num) { + var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; + return (Array(len).join('0') + num).slice(-len); + }; + + /** + * @description 获取字符串的字符串长度 + * @version 0.0.1 + * @param {string} 需要计算字符长度的字符串 + * @return {number} 字符串字符长度 + * @example + * + * E.StringLength('我爱你中国。'); // 12 + * E.StringLength('我爱你中国。me too.'); // 19 + */ + var StringLength = function StringLength(str) { + var length = 0; + var sLen = str.length; + + for (var i = 0; i < sLen; i += 1) { + if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94) { + length += 2; + } else { + length += 1; + } + } + + return length; + }; + + var ws = "\t\n\x0B\f\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003" + "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + "\u2029\uFEFF"; + var zeroWidth = "\u200B"; + var hasProtoTrim = String.prototype.trim === 'function'; + /** + * @description 删除字符串两端的空白(条带)。 + * @version 0.0.1 + * @param {string} 需要删除两端空白的字符串 + * @return {string} 去掉两端空后的字符串 + * @example + * E.trim(' 我爱你中国。 '); // 我爱你中国。 + */ + + var trim = !hasProtoTrim || ws.trim() || !zeroWidth.trim() ? function (str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); + } : function (str) { + return str.trim(); + }; + + var ws$1 = "\t\n\x0B\f\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003" + "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + "\u2029\uFEFF"; + /** + * @description 删除字符串内所有空白(条带)。 + * @version 0.0.1 + * @param {string} 需要删除空白的字符串 + * @return {string} 去掉空白后的字符串 + * @example + * E.trimAll(' 我 爱 你 中国。 '); // 我爱你中国。 + */ + + var trimAll = function trimAll(str) { + var Rx = new RegExp('[' + ws$1 + '][' + ws$1 + ']*', 'g'); + return str.replace(Rx, ''); + }; + + /** + * @description 判断是否为手机号码 + * @version 0.0.1 + * @param {string | number} 手机号码 + * @return {boolean} true | false + * @example + * E.isCellphone(13366666666); // true + * E.isCellphone(12266666666); // false + */ + var isTelephone = function isTelephone(num) { + var Rx = new RegExp(/^1[3456789]\d{9}$/); + return Rx.test(num); + }; + + /** + * @description 判断是否为座机号码 + * @version 0.0.1 + * @param {string | number} 座机号码 + * @return {boolean} true | false + * @example + * E.isFixedPhone('021-87888822'); // true + * E.isFixedPhone(87888822); // true + */ + var isFixedLinePhone = function isFixedLinePhone(phone) { + var Rx = new RegExp(/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/); + return Rx.test(phone); + }; + + /** + * @description 判断是否为身份证号。支持15和18位的判断 + * @version 0.0.1 + * @param {string | number} 身份证号 + * @return {boolean} true | false + * @example + * E.isIdCard('110222199012112445'); // true + * E.isIdCard(122444444444444); // true + */ + var isIDCard = function isIDCard(id) { + var Rx = new RegExp(/^(^\d{15}$)|(^\d{17}([0-9]|X)$)$/); + return Rx.test(id); + }; + + exports.NumberPadding = NumberPadding; + exports.StringLength = StringLength; + exports.isCellphone = isTelephone; + exports.isFixedPhone = isFixedLinePhone; + exports.isIdCard = isIDCard; + exports.trim = trim; + exports.trimAll = trimAll; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/dist/eagle.min.js b/dist/eagle.min.js new file mode 100644 index 0000000..51abd10 --- /dev/null +++ b/dist/eagle.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).Eagle={})}(this,function(e){"use strict";var r="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff",t=!("function"===String.prototype.trim)||r.trim()?function(e){var t=RegExp("^["+r+"]["+r+"]*"),n=RegExp("["+r+"]["+r+"]*$");return e.replace(t,"").replace(n,"")}:function(e){return e.trim()},n="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff";e.NumberPadding=function(e,t){var n=1 127 || str.charCodeAt(i) == 94) { + length += 2; + } else { + length += 1; + } + } + + return length; +}; + +export default StringLength; \ No newline at end of file diff --git a/es/index.js b/es/index.js new file mode 100644 index 0000000..2a5121b --- /dev/null +++ b/es/index.js @@ -0,0 +1,7 @@ +export { default as NumberPadding } from "./NumberPadding.js"; +export { default as StringLength } from "./StringLength.js"; +export { default as trim } from "./trim.js"; +export { default as trimAll } from "./trimAll.js"; +export { default as isCellphone } from "./isCellphone.js"; +export { default as isFixedPhone } from "./isFixedLinePhone.js"; +export { default as isIdCard } from "./isIdCard.js"; \ No newline at end of file diff --git a/es/isCellphone.js b/es/isCellphone.js new file mode 100644 index 0000000..cbe0bfc --- /dev/null +++ b/es/isCellphone.js @@ -0,0 +1,15 @@ +/** + * @description 判断是否为手机号码 + * @version 0.0.1 + * @param {string | number} 手机号码 + * @return {boolean} true | false + * @example + * E.isCellphone(13366666666); // true + * E.isCellphone(12266666666); // false + */ +var isTelephone = function (num) { + var Rx = new RegExp(/^1[3456789]\d{9}$/); + return Rx.test(num); +}; + +export default isTelephone; \ No newline at end of file diff --git a/es/isFixedLinePhone.js b/es/isFixedLinePhone.js new file mode 100644 index 0000000..71419de --- /dev/null +++ b/es/isFixedLinePhone.js @@ -0,0 +1,15 @@ +/** + * @description 判断是否为座机号码 + * @version 0.0.1 + * @param {string | number} 座机号码 + * @return {boolean} true | false + * @example + * E.isFixedPhone('021-87888822'); // true + * E.isFixedPhone(87888822); // true + */ +var isFixedLinePhone = function (phone) { + var Rx = new RegExp(/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/); + return Rx.test(phone); +}; + +export default isFixedLinePhone; \ No newline at end of file diff --git a/es/isIdCard.js b/es/isIdCard.js new file mode 100644 index 0000000..6125fe3 --- /dev/null +++ b/es/isIdCard.js @@ -0,0 +1,15 @@ +/** + * @description 判断是否为身份证号。支持15和18位的判断 + * @version 0.0.1 + * @param {string | number} 身份证号 + * @return {boolean} true | false + * @example + * E.isIdCard('110222199012112445'); // true + * E.isIdCard(122444444444444); // true + */ +var isIDCard = function (id) { + var Rx = new RegExp(/^(^\d{15}$)|(^\d{17}([0-9]|X)$)$/); + return Rx.test(id); +}; + +export default isIDCard; \ No newline at end of file diff --git a/es/trim.js b/es/trim.js new file mode 100644 index 0000000..85fdc9e --- /dev/null +++ b/es/trim.js @@ -0,0 +1,20 @@ +var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; +var zeroWidth = '\u200b'; +var hasProtoTrim = String.prototype.trim === 'function'; +/** + * @description 删除字符串两端的空白(条带)。 + * @version 0.0.1 + * @param {string} 需要删除两端空白的字符串 + * @return {string} 去掉两端空后的字符串 + * @example + * E.trim(' 我爱你中国。 '); // 我爱你中国。 + */ + +var trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? function (str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); +} : function (str) { + return str.trim(); +}; +export default trim; \ No newline at end of file diff --git a/es/trimAll.js b/es/trimAll.js new file mode 100644 index 0000000..059a85f --- /dev/null +++ b/es/trimAll.js @@ -0,0 +1,16 @@ +var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; +/** + * @description 删除字符串内所有空白(条带)。 + * @version 0.0.1 + * @param {string} 需要删除空白的字符串 + * @return {string} 去掉空白后的字符串 + * @example + * E.trimAll(' 我 爱 你 中国。 '); // 我爱你中国。 + */ + +var trimAll = function (str) { + var Rx = new RegExp('[' + ws + '][' + ws + ']*', 'g'); + return str.replace(Rx, ''); +}; + +export default trimAll; \ No newline at end of file diff --git a/package.json b/package.json index f3b0a9f..832fde9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@interaction/eagle", - "version": "0.0.3", + "version": "0.0.4", "description": "JavaScript library", "keywords": [ "eagle", diff --git a/src/NumberPadding.js b/src/NumberPadding.js new file mode 100644 index 0000000..a80e350 --- /dev/null +++ b/src/NumberPadding.js @@ -0,0 +1,15 @@ +/** + * @description 在数字前面补`0` + * @version 0.0.1 + * @param {string | number} 数字 + * @param {number} 补充0后的数字长度 + * @return {string} 补充0后的数字 + * @example + * E.NumberPadding(1); // 01 + * E.NumberPadding('2', 3); // 002 + */ +var NumberPadding = function (num, len = 2) { + return (Array(len).join('0') + num).slice(-len); +}; + +module.exports = NumberPadding; \ No newline at end of file diff --git a/src/StringLength.js b/src/StringLength.js new file mode 100644 index 0000000..2f8b8e4 --- /dev/null +++ b/src/StringLength.js @@ -0,0 +1,26 @@ +/** + * @description 获取字符串的字符串长度 + * @version 0.0.1 + * @param {string} 需要计算字符长度的字符串 + * @return {number} 字符串字符长度 + * @example + * + * E.StringLength('我爱你中国。'); // 12 + * E.StringLength('我爱你中国。me too.'); // 19 + */ +var StringLength = function (str) { + var length = 0; + var sLen = str.length; + + for (let i = 0; i < sLen; i += 1) { + if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94) { + length += 2; + } else { + length += 1; + } + } + + return length; +}; + +module.exports = StringLength; \ No newline at end of file diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..687b01b --- /dev/null +++ b/src/index.js @@ -0,0 +1,8 @@ +module.exports = {}; +module.exports.NumberPadding = /*#__PURE__*/require("./NumberPadding"); +module.exports.StringLength = /*#__PURE__*/require("./StringLength"); +module.exports.trim = /*#__PURE__*/require("./trim"); +module.exports.trimAll = /*#__PURE__*/require("./trimAll"); +module.exports.isCellphone = /*#__PURE__*/require("./isCellphone"); +module.exports.isFixedPhone = /*#__PURE__*/require("./isFixedLinePhone"); +module.exports.isIdCard = /*#__PURE__*/require("./isIdCard"); \ No newline at end of file diff --git a/src/index.mjs b/src/index.mjs new file mode 100644 index 0000000..6a269e7 --- /dev/null +++ b/src/index.mjs @@ -0,0 +1,7 @@ +export { default as NumberPadding } from "./NumberPadding.js"; +export { default as StringLength } from "./StringLength.js"; +export { default as trim } from "./trim.js"; +export { default as trimAll } from "./trimAll.js"; +export { default as isCellphone } from "./isCellphone.js"; +export { default as isFixedPhone } from "./isFixedLinePhone.js"; +export { default as isIdCard } from "./isIdCard.js"; diff --git a/src/isCellphone.js b/src/isCellphone.js new file mode 100644 index 0000000..7ad9b95 --- /dev/null +++ b/src/isCellphone.js @@ -0,0 +1,15 @@ +/** + * @description 判断是否为手机号码 + * @version 0.0.1 + * @param {string | number} 手机号码 + * @return {boolean} true | false + * @example + * E.isCellphone(13366666666); // true + * E.isCellphone(12266666666); // false + */ +var isTelephone = function (num) { + var Rx = new RegExp(/^1[3456789]\d{9}$/); + return Rx.test(num); +}; + +module.exports = isTelephone; \ No newline at end of file diff --git a/src/isFixedLinePhone.js b/src/isFixedLinePhone.js new file mode 100644 index 0000000..962226c --- /dev/null +++ b/src/isFixedLinePhone.js @@ -0,0 +1,15 @@ +/** + * @description 判断是否为座机号码 + * @version 0.0.1 + * @param {string | number} 座机号码 + * @return {boolean} true | false + * @example + * E.isFixedPhone('021-87888822'); // true + * E.isFixedPhone(87888822); // true + */ +var isFixedLinePhone = function (phone) { + var Rx = new RegExp(/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/); + return Rx.test(phone); +}; + +module.exports = isFixedLinePhone; \ No newline at end of file diff --git a/src/isIdCard.js b/src/isIdCard.js new file mode 100644 index 0000000..9bdb9ee --- /dev/null +++ b/src/isIdCard.js @@ -0,0 +1,15 @@ +/** + * @description 判断是否为身份证号。支持15和18位的判断 + * @version 0.0.1 + * @param {string | number} 身份证号 + * @return {boolean} true | false + * @example + * E.isIdCard('110222199012112445'); // true + * E.isIdCard(122444444444444); // true + */ +var isIDCard = function (id) { + var Rx = new RegExp(/^(^\d{15}$)|(^\d{17}([0-9]|X)$)$/); + return Rx.test(id); +}; + +module.exports = isIDCard; \ No newline at end of file diff --git a/src/trim.js b/src/trim.js new file mode 100644 index 0000000..0d07cc9 --- /dev/null +++ b/src/trim.js @@ -0,0 +1,20 @@ +var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; +var zeroWidth = '\u200b'; +var hasProtoTrim = String.prototype.trim === 'function'; +/** + * @description 删除字符串两端的空白(条带)。 + * @version 0.0.1 + * @param {string} 需要删除两端空白的字符串 + * @return {string} 去掉两端空后的字符串 + * @example + * E.trim(' 我爱你中国。 '); // 我爱你中国。 + */ + +var trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? function (str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); +} : function (str) { + return str.trim(); +}; +module.exports = trim; \ No newline at end of file diff --git a/src/trimAll.js b/src/trimAll.js new file mode 100644 index 0000000..587d6dd --- /dev/null +++ b/src/trimAll.js @@ -0,0 +1,16 @@ +var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; +/** + * @description 删除字符串内所有空白(条带)。 + * @version 0.0.1 + * @param {string} 需要删除空白的字符串 + * @return {string} 去掉空白后的字符串 + * @example + * E.trimAll(' 我 爱 你 中国。 '); // 我爱你中国。 + */ + +var trimAll = function (str) { + var Rx = new RegExp('[' + ws + '][' + ws + ']*', 'g'); + return str.replace(Rx, ''); +}; + +module.exports = trimAll; \ No newline at end of file