npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

winnerfrontnpm

v1.0.5

Published

winner 前端常用包

Downloads

16

Readme

winner-front(函数库)

概述

前端开发常用到的一下弹框、校验(手机号、姓名、身份证、车牌号等)、方法(获取参数对象、获取具体参数值)、格式化(时间、星期几、)等。 封装成npm包,引用使用,不需要重复造轮子,把精力放在业务逻辑上!

Install(安装)

npm install winnerfrontnpm --save

正则校验

1.邮箱校验

/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
 (字母大小写+数字)@(字母大小写+数字).(2到4位大小写字母)
调用
var email = isEmail("[email protected]");  >>> true
返回格式
true
false

2.手机号校验

/^[1][3,4,5,6,7,8,9][0-9]{9}$/
1(3,4,5,6,7,8,9)9位数字
调用
var phone = isPhone("17791430698");  >>> true
var phone = isPhone("1791430698");  >>> false
返回格式
true
false

3.微信号校验

/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/
(大小写字母)(5-19位包括-_大小写字母数字)
调用
var weiXin = isWeiXin("linsanxin885577");  >>> true
var weiXin2 = isWeiXin("lisnx的n885577");  >>> false
返回格式
true
false

1.长度要求:微信号的长度必须为6-20个字符。 2.字符允许:微信号只能包含字母、数字、下划线。 3.数字要求:微信号必须包含数字,但不能是纯数字。 4.字母要求:微信号必须包含字母,但不能全部是字母。 5.下划线要求:微信号不能以下划线开头和结尾。

4.QQ号校验

/^[1-9][0-9]{4,10}$/
(1-9)(4-10位0-9)

规则:5-11位数字,0不能开头

调用
var QQ = isQQ("932647051");  >>> true
返回格式
true
false

5.车牌号校验

根据车牌号长度兼容新能源车牌和普通车牌

// 新能源
let xny = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([A-HJ-K][A-HJ-NP-Z0-9][0-9]{4}$))/;
// 燃油车
let ryc = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;

普通车牌:汉字 + A-Z + 4位A-HJ-NP-Z0-9 + 1位A-HJ-NP-Z0-9挂学警港澳 (车牌号不存在字母I和O防止和1、0混淆)

调用
var CarNo = isCarNo("粤A12345");  >>> { res: true, msg: '' }
var CarNo2 = isCarNo("广东A12345");  >>> { res: false, msg: '车牌号格式不正确' }
返回格式
{ res: false, msg: '车牌号格式不正确' }
{ res: true, msg: '' }
msg错误提示如下:

1、车牌号格式不正确 2、车牌号长度不正确

6.身份证号校验

15\18位 15位为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位) 18位为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位)

调用
var isCard = isIdCard("415106199801012130"); >>> { res: false, msg: '身份证号格式不正确请检查' }
var isCard2 = isIdCard("612442180306240924"); >>> { res: false, msg: '身份证号生日格式错误请检查' }
返回格式
{ res: false, msg: '身份证号生日格式错误请检查' }
{ res: true, msg: '' }
msg错误提示如下:

1、未发现需要校验的内容 2、身份证号长度为15、18位请检查 3、身份证位15、18位数字请检查 4、身份证号省份错误 5、身份证号生日格式错误请检查 如:415106200802292130 (08年2月没有30号) 6、身份证号格式不正确请检查 (多是因为后4位检验码错误)

前两位为省份代码 ( 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 ")

7.银行卡号校验

调用
var bandCard = bankCardCheck('6324125789654123698'); >>> { res: false, msg: '银行卡号格式错误请检查' }
返回格式
{ res: false, msg: '银行卡号格式错误请检查' }
{ res: true, msg: '' }
正则说明:
/^(?:[1-9]\d{15}|[1-9]\d{17}|[1-9]\d{18})$/
先校验位数 和 是否是数字格式 
满足后通过具体 Luhn算法 再校验;

8.是否是url地址

/^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
调用
var url2 = isURL("http://haha.sunshine.com/xxx/xxx"); >>> true
返回格式
true
false
正则说明:
  • ((https?|ftp|file)://)?:匹配协议部分,可以是 http, https, ftp, 或 file,后面跟着 : //。这部分是可选的。
  • (https?):匹配 http 或 https。
  • ://:匹配 : //。
  • ?:表示前面的协议部分是可选的。
  • ([\da-z.-]+):匹配域名部分,包括数字、字母、点号和连字符。
  • [\da-z.-]:匹配数字、小写字母、点号和连字符。
  • +:表示前面的字符集可以出现一次或多次。
  • .:匹配点号。
  • ([a-z.]{2,6}):匹配顶级域名,通常是两到六个字母或点号。
  • ([/\w .-]*):匹配路径部分,包括斜杠、字母、数字、下划线、空格、点号和连字符。 *:表示前面的字符集可以出现零次或多次。
  • /?:匹配可选的结尾斜杠。
  • $:匹配字符串的结束。

9.判断中文字符、及位数

/[\u4E00-\u9FA5]/
调用
var cn = isCn("我是是林三心", 6); >>> { res: true, msg: '' }
var cn3 = isCn("我是林三", 6); >>> { res: false, msg: '校验内容长度不正确请检查' }
var cn2 = isCn("我林三心"); >>> { res: true, msg: '' }
参数一: 校验内容
参数二: 位数(number)  非必传,默认为4
返回格式
{ res: false, msg: '校验内容长度不正确请检查' }
{ res: true, msg: '' }
msg错误提示如下:

1、未发现需检测内容请检查 2、校验内容长度不正确请检查 3、校验内容格式不正确请检查

10.判断数字、及位数

/^\d+$/
调用
var num = checkNum(1578); >>> { res: true, msg: '' }
var num2 = checkNum('899'); >>> { res: false, msg: '校验内容长度不正确请检查' }
var num3 = checkNum(12369, 5); >>> { res: true, msg: '' }
参数一: 校验内容
参数二: 位数(number)  非必传,默认为4
返回格式
{ res: false, msg: '校验内容长度不正确请检查' }
{ res: true, msg: '' }
msg错误提示如下:

1、未发现需检测内容请检查 2、校验内容长度不正确请检查 3、校验内容格式不正确请检查

11.护照格式校验

调用
var passport1 = validatePassport("1234567cx89", "us");
var passport1 = validatePassport("G12345678", "china");
var passport1 = validatePassport("A123456789A","international");
参数一: 校验内容
参数二: 类型(number)  非必传,默认为china,  可选 us, international
返回格式
{ res: false, msg: '护照号格式不正确请检查' }
{ res: true, msg: '' }
正则说明:
1、如果是国际护照: 通常为9位数字,最后一位可能是字母
   const internationalPassportRegex = /^[A-Z0-9<]{9}[0-9]{1}[A-Z<]$/;
2、如果是美国护照,通常为9位数字  const usPassportRegex = /^\d{9}$/;
3、默认国内护照,可能包含字母和数字,长度可能为9位 const chinaPassportRegex = /^[a-zA-Z]\d{7,8}$/

常用方法

1.手机号码前三后四显示

telFormat('18591784526')
telFormat('1859178456')

会先检验手机号格式;
格式错误提示:"格式化内容不符合手机号规则请检查"
格式正确,返回处理后的手机号; 如:185****4526

2.字符串首字母大写

firstLetterUpper('a1859156') >>> A1859156
firstLetterUpper('的47859') >>> 的47859

首字母非拼音的不会报错,直接返回原内容;

3.日期格式化

dateFormat("YYYY-mm-dd HH:MM:SS", date)

参数: 
1、YYYY-mm-dd HH:MM:SS  日期格式, 拼接符-和: 可以根据自己需求修改
如: dateFormat("YYYY+mm*dd HH@MM#SS", new Date())  >>>  2024+08*07 14@48#32
2、字母 Y、m、d、H、M、S、 不可以修改, 可默认几个如: mm-dd、MM:SS等
3、date为需要格式化的日期,可以是时间戳格式、或 中国标准时间,如:Wed Aug 07 2024 14:48:32 GMT+0800 (中国标准时间)

4.日期距离现在时间

beforeDateFormat('2024-08-06 15:33:14')
beforeDateFormat(new Date('2024-08-06 15:14:14').getTime())
beforeDateFormat('Wed Aug 07 2024 14:48:32 GMT+0800 (中国标准时间)')

返回: 刚刚、**分钟、**小时(24小时内)、**天、**周、**月、**年、

5.两个时间差

calculateDiffTime('2024-08-07 16:33:14', '2023-08-10 16:33:25') >>> 12月2日23时59分49秒
calculateDiffTime('2024-08-07 16:33:14', '2024-08-07 16:33:14') >>> 时间无差别
calculateDiffTime(new Date('2024-08-06 15:14:14').getTime(), '2024-08-10 16:33:25') >>> 4日19分11秒
calculateDiffTime('Wed Aug 07 2024 14:48:32 GMT+0800 (中国标准时间)', '2024-08-10 16:33:25') >>> 3日44分53秒

传值: 开始时间、结束时间、type
返回: 时间无差别、具体时间差
type:
 1: 几年
 2: 几年几月
 3: 几年几月几日
 不传默认: 年月日时分秒,根据实际情况返回

6.判断星期几

console.log(getWeek('2024-08-20'))
console.log(getWeek(new Date()))
console.log(getWeek(1645414395327))

返回: 星期日、星期一、星期二、星期三、星期四、星期五、星期六

7.数字 逢三一断 格式化

console.log(numFilterThreeCut(145899)) >>> 145,899
console.log(numFilterThreeCut(2569.369)) >>> 2,569.369
console.log(numFilterThreeCut(12589654.38)) >>> 12,589,654.38
console.log(numFilterThreeCut(257129)) >>> 257,129

8. 数字转为大写金额

console.log(digitUppercase(145899)) >>> 壹拾肆万伍仟捌佰玖拾玖元整
console.log(digitUppercase(2569.36)) >>> 仟伍佰陆拾玖元叁角陆分
console.log(digitUppercase(12589654.36)) >>> 壹仟贰佰伍拾捌万玖仟陆佰伍拾肆元叁角陆分
console.log(digitUppercase(257129)) >>> 贰拾伍万柒仟壹佰贰拾玖元整

9. 将阿拉伯数字翻译成中文的大写数字(五仟二百二十二)

console.log(changeToChinese(145899)) >>> 一十四万五千八百九十九
console.log(changeToChinese(2569.36)) >>> 二千五百六十九点三六
console.log(changeToChinese(12589654.36)) >>> 一千二百五十八万九千六百五十四点三六
console.log(changeToChinese(257129)) >>> 二十五万七千一百二十九