字符校验工具库,内置各种校验规则
- 💪 基于Typescript构建.
- ⚙️ 单元测试覆盖.
- ✨ Browser/Node/esModule support.
pnpm
pnpm install validator-util
yarn
yarn add validator-util
npm
npm install validator-util
ES6
import { isEmail } from 'validator-util';
isEmail('[email protected]'); // -> true
支持Tree shaking的导入
import isEmail from 'validator-util/es/lib/is-email';
isEmail('[email protected]'); // -> true
其他方式导入
var validator = require('validator-util');
validator.isEmail('[email protected]'); // -> true
浏览器中直接运行:复制文件validator-util.js
到项目中即可。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浏览器中直接运行</title>
</head>
<body>
<script src="validator-util.js"></script>
<script>
window.validatorUtil.isEmail('[email protected]'); // -> true
</script>
</body>
</html>
方法名 | 说明 | 示例 | 参数 |
---|---|---|---|
isID | 身份证,支持一代身份证、二代身份证 | 例如: 11010119900101119X | (value: string, options:? { exact?: boolean }) => boolean options.exact 是否启用严谨校验,默认false,注意严谨校验不能用在第一代身份证。非严谨使用正则,严谨校验进行计算,计算规则参考“中国国家标准化管理委员会” GB 11643-1999 公民身份证号码 |
isUSCI | 法人和其他组织统一社会信用代码的合法性校验 | 例子: 91350100M000100Y43 | (value: string, options:? { exact?: boolean }) => boolean options.exact 是否启用严谨校验,默认false,非严谨使用正则,严谨校验进行计算,计算规则参考“中国国家标准化管理委员会” GB 32100-2015 法人和其他组织统一社会信用代码编码规则 |
isEmail | 邮箱校验(兼容中文邮箱校验) | 例如: [email protected], 中文邮箱名@gmail.com | (value: string) => boolean |
isPhone | 手机号码和座机号码的联合校验 | 例如: +8617888829981, 19119255642, 0936-4211235 | (value: string, options:? { exact?: boolean }) => boolean options.exact 是否启用严谨校验,默认false,严谨校验根据工信部2019年最新公布的手机号段; 非严谨校验只要是13,14,15,16,17,18,19开头即可 |
isMobilePhone | 手机号码校验 | 例如: +8617888829981, 19119255642 | (value: string, options:? { exact?: boolean }) => boolean options.exact 是否启用严谨校验,默认false,严谨校验根据工信部2019年最新公布的手机号段; 非严谨校验只要是13,14,15,16,17,18,19开头即可 |
isTelPhone | 座机号码校验 | 例如: 0936-4211235, 0936-4211235, 89076543, 010-12345678-1234 | (value: string) => boolean |
isIMEI | 手机机身码(IMEI)校验 | 例如: 1234567890123456 | (value: string) => boolean |
isTrainNumber | 火车车次校验 | 例如: G1868, D102, D9, Z5, Z24, Z17 | (value: string) => boolean |
isZhCN | 中文/汉字校验 | 例如: 前端, 科学 | (value: string) => boolean |
isHtmlTag | html标签校验(宽松匹配) | 例如: <div id="app"> 2333 </div>, <input type="text">, <br> |
(value: string) => boolean |
isDomainName | 域名校验(非网址, 不包含协议) | 例如: www.baidu.com, baidu.com, baidu.com.cn, api.baidu.com, nodejs.org, nodejs.cn , 反例: http://baidu.com, https://baidu.com, www.百度.com |
(value: string) => boolean |
isHouseholdRegister | 户口薄校验 | 例如: 441421999707223115 | (value: string) => boolean |
isURL | 网址校验 | 例如: www.qq.com, https://vuejs.org/v2/api/#v-model, www.qq.99, //www.qq.com, www.腾讯.cs, ftp://baidu.qq, http://baidu.com, https://www.amap.com/search?id=BV&city=4&geoobj=11&query_type=IDQ&query=23&zoom=10.15, 360.com:8080/vue/#/a=1&b=2 | (value: string) => boolean |
isUrlWithPort | 网址校验(必须带端口号的网址或IP) | 例如: https://www.qq.com:8080, 127.0.0.1:5050, baidu.com:8001, http://192.168.1.1:9090 , 反例: 192.168.1.1, https://www.jd.com |
(value: string) => boolean |
isThunderxLink | 迅雷链接校验 | 例如: thunder://QUEsICdtYWduZXQ26P3h0PXVybjpidGloOjBCQTE0RTUxRkUwNjU1RjE0Qzc4NjE4RjY4NDY0QjZFNTEyNjcyOUMnWlo= | (value: string) => boolean |
isEd2kLink | ed2k链接校验 | 例如: ed2k://file%E5%AF%84%E7%94%9F%E8%99%AB.PARASITE.2019.HD-1080p.X264.AAC-UUMp4(ED2000.COM).mp4 | (value: string) => boolean |
isMagnetLink | 磁力链接校验 | 例如: magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC | (value: string) => boolean |
isSubnetMask | 子网掩码校验(不包含 0.0.0.0) | 例如: 255.255.255.0, 255.255.255.255, 255.240.0.0 | (value: string) => boolean |
isMacAddress | MAC地址校验 | 例如: 38:f9:d3:4b:f5:51, 00-0C-29-CA-E4-66 | (value: string) => boolean |
isLinuxHiddenFilePath | linux"隐藏文件"路径校验 | 例如: /usr/ad/.dd, /root/.gitignore, /.gitignore | (value: string) => boolean |
isLinuxDirPath | linux文件夹路径校验 | 例如: /usr/ad/dd/, /, /root/, / a a / a / a a / | (value: string) => boolean |
isLinuxFilePath | linux"隐藏文件"路径校验 | 例如: /root/b.ts, /root/abc | (value: string) => boolean |
isWindowDirPath | window"文件夹"路径校验 | 例如: C:\Users\Administrator\Desktop, e:\m\ | (value: string) => boolean |
isWindowFilePath | window下"文件"路径 | 例如: C:\Users\Administrator\Desktop\qq.link, e:\m\vscode.exe | (value: string) => boolean |
isAShares | 股票代码(A股)校验 | 例如: sz000858, SZ002136, sz300675, SH600600, sh601155 | (value: string) => boolean |
isExamScore | 考卷分数校验 | 大于等于0, 小于等于150, 支持小数位出现5, 例如: 145.5, 150, 100.5 | (value: string) => boolean |
isHtmlComment | html注释校验 | 例如: <!--<div class="_bubble"></div>--><div>chenguzhen87</div><div class="_bubble"></div>--> |
(value: string) => boolean |
isMd5 | md5格式校验(32位) | 例如: 21fe181c5bfc16306a6828c1f7b762e8 | (value: string) => boolean |
isUUID | UUID(GUID)校验 | 例如: e155518c-ca1b-443c-9be9-fe90fdab7345, 41E3DAF5-6E37-4BCC-9F8E-0D9521E2AA8D, 00000000-0000-0000-0000-000000000000 | (value: string) => boolean |
isVersion | 版本号校验(X.Y.Z格式) | 例如: 16.3.10, 0.0.1 | (value: string) => boolean |
isVideoLink | 视频链接地址校验 | 例如: http://www.abc.com/video/997.mp4, https://www.efg.com/video/996.avi | (value: string) => boolean |
isImageLink | 图片链接地址校验 | 例如: https://www.abc.com/logo.png, http://www.abc.com/logo.png | (value: string) => boolean |
is24HourClock | 24小时制时间(HH:mm:ss)校验 | 例如: 23:34:55, 00:00:00 | (value: string) => boolean |
is12HourClock | 12小时制时间(hh:mm:ss)校验 | 例如: 11:34:55 反例: 23:34:55 |
(value: string) => boolean |
isBase64 | base64格式校验 | 例如: data:image/gif;base64,xxxx== | (value: string) => boolean |
isCurrencyAmount | 数字/货币金额校验 | 支持负数、千分位分隔符,例如: 100, -0.99, 3, 234.32, -1, 900, 235.09, 12,345,678.90 | (value: string) => boolean |
isBankCardNumber | 银行卡号校验 | 例如: 6234567890, 6222026006705354000 10到30位, 覆盖对公/私账户, 参考微信支付 |
(value: string) => boolean |
isChineseName | 中文姓名校验 | 例如: 张三, 李四, 王五, 葛二蛋, 凯文·杜兰特, 德克·维尔纳·诺维茨基 | (value: string) => boolean |
isEnglishName | 英文姓名校验 | 例如: James, Kevin Wayne Durant, Dirk Nowitzki | (value: string) => boolean |
isLicensePlate | 车牌号校验(非新能源) | 例如: 京A00599, 黑D23908 | (value: string) => boolean |
isLicensePlateNev | 车牌号校验(新能源) | 例如: 京AD92035, 甘G23459F, 京AA92035 | (value: string) => boolean |
isLicensePlateAll | 车牌号校验(新能源+非新能源) | 例如: 京A12345D, 京A00599, 京AD92035, 甘G23459F, 京AA92035 反例: 宁AD1234555555, 浙苏H6F681 |
(value: string) => boolean |
isDate | 日期校验 | 严谨校验例如: 1990-12-12, 2000-02-29 , 反例: 2021-02-29 非严谨校验例如: 1990-12-12, 1-1-1, 0000-1-1 , 反例: 2020-00-01 |
(value: string, options:? { exact?: boolean }) => boolean options.exact 是否启用严谨校验,默认true,严谨校验: 支持闰年判断。非严谨,这种日期都能通过: 1-1-1, 0000-1-1 |
isProvince | 中国省份校验 | 例如: 浙江, 台湾 , 反例: 哈尔滨 | (value: string) => boolean |
isPassport | 护照校验 | 例如: s28233515, 141234567, 159203084, MA1234567, K25345719 | (value: string) => boolean |
isIPV4 | ip-v4校验(端口可选项) | 例如: 172.16.0.0, 172.16.0.0:8080, 127.0.0.0, 127.0.0.0:998 | (value: string) => boolean |
isIPV6 | ip-v6校验(端口可选项) | 例如: 2031:0000:130f:0000:0000:09c0:876a:130b, [2031:0000:130f:0000:0000:09c0:876a:130b]:8080 | (value: string) => boolean |
isHexColor | 十六进制颜色校验 | 例如: #f00, #F90, #000, #fe9de8, #f8f8f8ff, #f003 | (value: string) => boolean |
isPostalCode | 中国邮政编码校验 | 例如: 734500, 100101 | (value: string) => boolean |
校验身份证号码、法人和其他组织统一社会信用代码的合法性参考IDCheck,这是TS程序的实现方式。计算规则参考国家标准文件:
-
标准号:GB 11643-1999:公民身份证号码
-
标准号:GB 32100-2015:法人和其他组织统一社会信用代码编码规则
注:由于早期部分试点地区推行
法人和其他组织统一社会信用代码
较早,会存在部分代码不符合国家标准的情况。但它们都是合法的代码,应当另行处理。 例如:福建恒跃柳工机械销售有限公司:
91350100M0001TGQXM
计算出的校验位是 1 和 M 不符厦门云上晴空航空科技有限公司:
91350211M0000XUF46
计算出的校验位是 R 和 6 不符厦门黑脉网络科技有限公司
91350203M0001FUE2P
计算出的校验位是 J 和 P 不符
LiuWanLin IDCheck