Compare commits

..

245 Commits

Author SHA1 Message Date
Russell
43abe0f895 perf: 手机号段增加192/6/7(#299)(#300) 2023-11-30 08:57:37 +08:00
Russell
f304ddf19d docs: 更新文档 2023-08-30 09:14:50 +08:00
Russell
912f29e3f3 fix: 更换新能源车牌正则(#281) 2023-08-30 09:14:23 +08:00
铁皮饭盒
f6f93753d2
Merge pull request #274 from thelostword/hexcolor/patch-1
fix: 修复16进制颜色无法匹配带 alpha 值的问题
2022-11-30 16:14:06 +08:00
losting
3b5a440413
Update RULES.js 2022-11-25 14:16:10 +08:00
losting
0c5bb2c90d
Update README.md 2022-11-25 14:14:43 +08:00
losting
583c72361a
Update RULES.js 2022-11-23 12:34:01 +08:00
losting
92f50702aa
Update README.md 2022-11-23 12:33:28 +08:00
thelostword
e62146d1c6 fix: 修复16进制颜色无法匹配带 alpha 值的问题
fix #273
2022-11-23 12:21:08 +08:00
铁皮饭盒
65a2282e82
Merge pull request #270 from q310550690/master
update:网页搜索吸顶
2022-11-07 14:53:39 +08:00
诗小柒
2fec6044a4 update:网页搜索吸顶 2022-11-07 14:32:36 +08:00
Russell
07cad47994 0.3.18 2022-11-07 12:05:50 +08:00
Russell
a35be80cc5 更新日志 2022-11-07 12:03:19 +08:00
Russell
5acc409192 0.3.17 2022-11-07 11:53:21 +08:00
Russell
3c2da62cb7 v0.3.16 2022-11-07 11:52:18 +08:00
Russell
977f357110 perf: 数字/货币金额(支持负数、千分位分隔符)(#238) 2022-11-07 11:47:07 +08:00
Russell
c3d49bdba5 perf: 小数(支持科学计数)(#234) 2022-11-07 11:43:10 +08:00
Russell
2cd6b6935f perf: 缩短"用户名校验"正则长度(#245) 2022-11-07 11:36:43 +08:00
Russell
bd26e0f450 fix: MAC地址的第二位一定是偶数(#264) 2022-11-07 11:34:02 +08:00
Russell
c0b38192b0 perf: 增加户口薄正则 2022-11-07 11:21:16 +08:00
Russell
ec0b032fb8 perf: 增加军官证正则 2022-11-07 11:19:45 +08:00
Russell
0be115a81f Merge branch 'master' into develop 2022-09-01 10:17:39 +08:00
Russell
c77249d98a docs: 更新demo地址 2022-09-01 10:07:27 +08:00
Russell
7913203e44 chore: demo移动到vercel 2022-09-01 10:06:40 +08:00
Russell
152c015f7d chore: 修改demo的打包路径 2022-09-01 10:02:16 +08:00
Russell
a9100ebe20 fix: 整数包含0(#263) 2022-09-01 09:45:42 +08:00
Russell
f36ebbde10 chore: 更新文档 2022-07-20 11:22:11 +08:00
Russell
877ff94622 0.3.15 2022-07-20 11:21:39 +08:00
Russell
32db74a841 docs: 更新文档 2022-07-20 11:20:29 +08:00
Russell
f762c31942 feat: 新增"域名"正则(#232) 2022-07-20 09:28:57 +08:00
Russell
a2a28b8dec chore: 删除npm的lock(#244) 2022-07-20 09:23:26 +08:00
Russell
765a8a2dc6 Merge branch 'master' of https://github.com/any86/any-rule 2022-07-20 09:08:27 +08:00
Russell
37a6d1e457 perf: 优化MD5正则的长度(#256) 2022-07-20 09:08:23 +08:00
铁皮饭盒
2304e724d7
Merge pull request #236 from trentlee0/master
添加 uTools 版链接地址
2022-07-20 09:06:40 +08:00
any86
96cb8eff89 fix: 支持195号段(#240) 2022-05-29 19:24:29 +08:00
Trent Lee
8064470b71 docs: 添加 uTools 版链接地址 2022-05-20 16:11:16 +08:00
Russell
508b202424 docs: 更新文档 2022-04-18 11:12:26 +08:00
Russell
39085bbd42 0.3.14 2022-04-18 11:11:22 +08:00
Russell
a6248d7208 feat: 新增"中国省"(#227) 2022-04-18 11:10:45 +08:00
Russell
86f2392d39 feat: 新增"日期(严谨, 支持闰年判断)"(#226) 2022-04-18 11:09:06 +08:00
Russell
574bbf8d8e feat: 新增"匹配中文汉字和中文标点" 2022-04-18 11:04:57 +08:00
铁皮饭盒
8337d819f5
Merge pull request #224 from heshimang/develop
feat: 添加车架号正则
2022-03-22 10:45:36 +08:00
heshimang
a4794f509c feat: 添加车架号正则 2022-03-22 09:48:49 +08:00
铁皮饭盒
c4b961531c
Merge pull request #222 from DiracKeeko/modify_dev
Modify dev
2022-03-11 20:01:38 +08:00
Keeko
39143127bc [feat] 新增 ASCII码表中的全部的特殊字符 正则 2022-03-11 17:10:02 +08:00
Keeko
5782ee1ddc [feat] 新增 浮点数(严格) 正则 2022-03-11 17:03:36 +08:00
Keeko
03471b0036 [feat] 更新浮点数逻辑 2022-03-11 16:51:55 +08:00
Keeko
043137e964 [fix] 修复整数逻辑, ban "022", allow "22" 2022-03-11 16:30:39 +08:00
铁皮饭盒
d71e412375
Update README.md 2022-02-22 17:39:20 +08:00
Russell
7601b3fc2a docs: 更新文档, 加入hyjs链接 2022-01-11 10:32:12 +08:00
Russell
2f86730484 fix: v0.3.13(#175, #207, #210, #215) 2022-01-10 13:35:23 +08:00
Russell
566f079bf8 0.3.13 2022-01-10 13:26:06 +08:00
Russell
21f94dfe65 chore: 更新依赖, 支持node16 2022-01-10 13:23:41 +08:00
铁皮饭盒
594175b638
Merge pull request #198 from any86/dependabot/npm_and_yarn/packages/www/color-string-1.6.0
chore(deps): bump color-string from 1.5.3 to 1.6.0 in /packages/www
2021-12-21 08:55:46 +08:00
Russell
e18baa40e5 chore: 更新circle ci中node镜像的版本 2021-12-20 15:41:06 +08:00
Russell
be1a8c73b3 chore(build): 更新文档脚本中gif图 2021-12-20 15:09:23 +08:00
Russell
cfc0ce47c4 docs: 更新文档 2021-12-20 14:40:12 +08:00
铁皮饭盒
22e14efe14
Merge pull request #209 from 2462870727/develop
fix 子网掩码正则错误问题
2021-12-20 14:39:16 +08:00
铁皮饭盒
ba3213aa54
Merge branch 'develop' into develop 2021-12-20 14:39:08 +08:00
铁皮饭盒
f159ef301f
Merge pull request #176 from FE-ng/dev_momentTimeRule_lf
添加了能够被moment正确转化的正则
2021-12-20 14:38:11 +08:00
铁皮饭盒
113abe7aa7
Merge branch 'develop' into dev_momentTimeRule_lf 2021-12-20 14:38:04 +08:00
Russell
77509e77e6 test: 增加测试用例(#207) 2021-12-20 14:23:14 +08:00
Russell
86b6af24c9 fix: 修正"澳门身份证"(#210) 2021-12-20 14:19:18 +08:00
Russell
8280758a03 fix: 参考百度百科和"chrome地址栏", 修改URL的验证规则(#175) 2021-12-20 11:30:37 +08:00
jiangkai@flksec.com
9690773b33 fix 子网掩码正则错误问题 2021-11-19 10:47:37 +08:00
Russell
57ef9be087 perf: 优化ipv6正则(#189) 2021-10-29 10:29:43 +08:00
any86
35256d81dd chore: 修改json格式错误 2021-10-20 22:43:58 +08:00
any86
ffc748695f
Merge pull request #204 from 2462870727/master
# 223
2021-10-20 22:39:46 +08:00
any86
4fafde7efc
Merge branch 'develop' into master 2021-10-20 22:39:20 +08:00
2462870727@qq.com
89083d14a6 update 复杂密码校验 2021-10-20 21:15:46 +08:00
xiaocaiji
7a0d7a32a9
Update RULES.js 2021-10-20 17:47:15 +08:00
xiaocaiji
f419267072
Update README.md 2021-10-20 17:05:33 +08:00
xiaocaiji
aff19cbcab
Update README.md 2021-10-20 17:04:50 +08:00
xiaocaiji
d9b00b4483
Update RULES.js 2021-10-20 17:04:14 +08:00
xiaocaiji
cd141a9472
Update README.md 2021-10-20 17:02:08 +08:00
xiaocaiji
26220db48a
Update RULES.js 2021-10-20 16:57:24 +08:00
Russell
8414a8e1aa docs: 更新文档 2021-10-20 11:21:51 +08:00
Russell
a499d000ad 0.3.12 2021-10-20 11:18:35 +08:00
Russell
1ca32353d4 chore:更新日志 2021-10-20 11:10:05 +08:00
Russell
36236a6d04 Merge branch 'develop' 2021-10-20 11:08:29 +08:00
Russell
4710be9ba9 fix: 解决网址不能带"()"(#202) 2021-10-20 11:05:44 +08:00
Russell
89444b29e8 Merge branch 'master' of https://github.com/any86/any-rule 2021-10-20 10:06:57 +08:00
any86
8fd08708dc
Merge pull request #201 from songjianet/develop-number
feat: Increase number-related regular verification
2021-10-20 10:05:39 +08:00
songjian
44b733569e feat: add cEmail 2021-10-19 11:09:37 +08:00
songjian
df9a5ac291 feat: Increase number-related regular verification 2021-10-13 16:12:45 +08:00
songjian
e0fcb8259b feat: Increase number-related regular verification 2021-10-12 17:48:26 +08:00
any86
7807af68b7 refactor: 修改web版本按钮样式 2021-10-01 20:26:01 +08:00
Russell
9b913b643b Merge branch 'master' of https://github.com/any86/any-rule 2021-09-28 16:54:29 +08:00
383514580
9873f5db00 v0.3.11 2021-09-27 21:01:10 +08:00
Russell
1283e87859 v0.3.11 2021-09-26 14:50:42 +08:00
Russell
ec9371016a 0.3.11 2021-09-26 14:50:07 +08:00
Russell
f83922b363 更新日志 2021-09-26 14:33:10 +08:00
Russell
7d52471fd9 perf: 身份证严格校验,包含年份、月份的校验,支持15,18位身份证(#190) 2021-09-26 14:31:17 +08:00
dependabot[bot]
2b5758a98d
chore(deps): bump color-string from 1.5.3 to 1.6.0 in /packages/www
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.6.0)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-26 06:11:06 +00:00
Russell
5f3887343a fix: 修复新版vocode中"@zz"不能唤起的BUG(#195) 2021-09-26 14:09:17 +08:00
any86
80f68ddec7
Create LICENSE 2021-09-07 17:20:02 +08:00
any86
9c322ba759
Merge pull request #184 from chenguzhen87/master
html注释正则修改
2021-07-23 15:27:14 +08:00
精武陈真
75a7848934
Update README.md 2021-07-23 12:01:48 +08:00
精武陈真
22e69a9220
Update RULES.js 2021-07-23 12:00:57 +08:00
liufeng
84e0699fa5 feat(components): 增加可以被moment转化成功的时间正则 2021-06-04 18:26:53 +08:00
Russell
8f3b1bd731 chore: yarn.lock 2021-05-28 09:23:51 +08:00
Russell
045d547044 0.3.10 2021-05-28 09:07:47 +08:00
Russell
c1da95fb10 chore: 更新日志 2021-05-28 09:07:02 +08:00
Russell
b9a81ed54f fix: 禁止日期可以通过00月00日(#173) 2021-05-28 09:02:34 +08:00
any86
1d4d366edc chore: v0.3.9 2021-04-20 14:09:32 +08:00
any86
d1669d1202 0.3.9 2021-04-20 14:08:13 +08:00
any86
aeda23e525 chore: 删除主要开发者列 2021-04-20 13:59:57 +08:00
any86
e11719698d chore: 更新日志 2021-04-20 13:58:34 +08:00
any86
e801a13e8c Merge branch 'develop' of https://github.com/any86/any-rule into develop 2021-04-20 13:51:01 +08:00
any86
aecee22e0d chore: linguist-vendored 2021-04-20 13:50:56 +08:00
383514580
38d9379311 Merge branch 'develop' 2021-03-09 22:42:58 +08:00
any86
e3e204bb26
Merge pull request #156 from richex-cn/new-rule-uuid
add rule for UUID/GUID
2021-03-09 22:22:37 +08:00
Richex
0016aad978 add rule for UUID/GUID 2021-03-08 14:30:12 +08:00
any86
479f5d3f6e
Merge pull request #154 from richex-cn/fix-web-case-sensitive
fix: 修复无法搜索大写字母的问题
2021-03-08 09:13:54 +08:00
Richex
08e2ab4125 fix: 修复无法搜索大写字母的问题 2021-03-07 15:37:09 +08:00
any86
bc421d25d2 chore: 优化web版本样式 2021-02-03 13:42:45 +08:00
any86
b8ddf5a515 chore(demo): 增加阴影 2021-02-03 13:16:35 +08:00
any86
7144a6744e [ci-skip]: 让ci忽略gh-page分支 2021-01-29 08:30:55 +08:00
any86
8e32df889e fix: 修复ip中的"."没有被转义 2021-01-29 08:23:33 +08:00
any86
e4f8f56da5 v0.3.8 2021-01-17 16:50:53 +08:00
any86
b6ba32e698 0.3.8 2021-01-17 16:50:21 +08:00
any86
e438e8ed5a chore: 更新日志 2021-01-17 16:50:14 +08:00
any86
d13ce0827b perf: 座机号支持分机号(#144) 2021-01-17 16:43:34 +08:00
any86
d06315c9ae perf: 精简一些冗余的写法(#150) 2021-01-17 16:42:57 +08:00
any86
3e72111e87 fix: 修复新能源汽车不匹配车牌第三位为字母的情况(#148) 2021-01-17 16:22:52 +08:00
any86
34fe7e7121 fix: 修正"."前面没有加转移符号(#141) 2020-12-21 09:54:01 +08:00
any86
c1a1552bf2 Merge branch 'develop' 2020-11-27 13:42:40 +08:00
any86
f58e16ab7e docs: 更新文档 2020-11-25 09:35:52 +08:00
any86
b7c3545c41 0.3.7 2020-11-25 09:33:18 +08:00
any86
640e7e7c91 0.3.7 更新日志 2020-11-25 09:32:32 +08:00
any86
3a592c90f8
Merge pull request #138 from any86/dependabot/npm_and_yarn/packages/www/highlight.js-9.18.5
chore(deps): bump highlight.js from 9.15.8 to 9.18.5 in /packages/www
2020-11-25 09:23:51 +08:00
any86
178b98a453 fix: 精准IP v4正则(#135) 2020-11-25 09:23:23 +08:00
dependabot[bot]
22a89d8ec2
chore(deps): bump highlight.js from 9.15.8 to 9.18.5 in /packages/www
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 9.15.8 to 9.18.5.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/9.18.5/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/9.15.8...9.18.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-25 00:53:57 +00:00
any86
dd1f24f3cd
Merge pull request #131 from liuyib/patch-1
chore: fix word spelling error
2020-10-20 16:45:51 +08:00
EvanOne(文一)
eb014b12a0
chore: fix word spelling error 2020-10-18 15:49:40 +08:00
any86
c2d3194a44
Merge pull request #125 from any86/dependabot/npm_and_yarn/packages/www/node-sass-4.13.1
chore(deps): bump node-sass from 4.12.0 to 4.13.1 in /packages/www
2020-10-09 21:43:28 +08:00
any86
c2bb7947b4
Merge pull request #126 from any86/dependabot/npm_and_yarn/packages/www/http-proxy-1.18.1
chore(deps): bump http-proxy from 1.17.0 to 1.18.1 in /packages/www
2020-10-09 21:43:13 +08:00
any86
a5fb512112
Merge pull request #129 from liuyib/patch-1
chore: In VS Code, the repository cannot be opened
2020-10-09 21:41:57 +08:00
any86
f306d5fb9c feat: 新增"座机(tel phone)电话(国内), 区号可选" 2020-10-09 17:22:29 +08:00
liuyib
9f9d2f0c86
chore: Unable to resolve resource
git+https://github.com/any86/any-rule.git
2020-09-25 19:44:42 +08:00
dependabot[bot]
9395ca5bb1
chore(deps): bump http-proxy from 1.17.0 to 1.18.1 in /packages/www
Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.17.0 to 1.18.1.
- [Release notes](https://github.com/http-party/node-http-proxy/releases)
- [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/http-party/node-http-proxy/compare/1.17.0...1.18.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-10 08:45:40 +00:00
dependabot[bot]
e447fd435b
chore(deps): bump node-sass from 4.12.0 to 4.13.1 in /packages/www
Bumps [node-sass](https://github.com/sass/node-sass) from 4.12.0 to 4.13.1.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.12.0...v4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-04 20:36:42 +00:00
any86
7ef6a8eadf perf: ip地址增加端口支持(#122) 2020-08-11 11:25:14 +08:00
any86
78f7a36cd1 chore: 发布0.3.6 2020-08-03 10:36:50 +08:00
any86
ed96040529 0.3.6 2020-08-03 10:35:13 +08:00
any86
9a4854c678 chore: 更新日志 2020-08-03 10:34:44 +08:00
any86
a526ed2db9 chore: 简化pre-push钩子的动作 2020-08-03 10:19:10 +08:00
any86
a3d67504ec refactor:增加"港澳台"身份证(#116) 2020-08-03 10:18:51 +08:00
any86
d568c54652 chore: add yarn.lock 2020-08-03 10:17:53 +08:00
any86
185d3d4802 Merge branch 'master' into develop 2020-08-03 09:43:08 +08:00
any86
89235cd9fc
Merge pull request #117 from ilxiaoli/master
feat: 增加"添加港澳台证件号"
2020-08-03 09:33:22 +08:00
Bin
c4067ddfc2
Update RULES.js
添加港澳台证件号正则
2020-07-30 17:02:15 +08:00
any86
a66c7b636b
Merge pull request #113 from any86/dependabot/npm_and_yarn/lodash-4.17.19
chore(deps): bump lodash from 4.17.15 to 4.17.19
2020-07-21 10:45:22 +08:00
any86
43f838952e
Merge pull request #110 from xiaoyierle/develop
fix: 添加统一社会信用代码15、18、20位长度匹配
2020-07-21 10:44:47 +08:00
any86
d9c9b89bcb Merge branch 'develop' 2020-07-18 23:54:07 +08:00
any86
4077842ef2 0.3.5 2020-07-18 23:51:05 +08:00
any86
d1676e3ef0 chore: 更新文档 2020-07-18 23:48:06 +08:00
any86
1d010da622 chore: 更新日志 2020-07-18 23:47:38 +08:00
any86
70a77a0d4b feat: 新增"数字和英文字母组成,并且同时含有数字和英文字母"(#108) 2020-07-18 23:45:06 +08:00
any86
58d9ac29b5 fix: 修复"车牌号"可以通过"浙苏H6F681"的问题(#111) 2020-07-18 23:41:09 +08:00
dependabot[bot]
0197ab0eb8
chore(deps): bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 22:00:18 +00:00
wangzhy
0adf663dfb fix 添加统一社会信用代码15、18、20位长度匹配 2020-07-16 11:35:33 +08:00
any86
8e3df6b324 Merge remote-tracking branch 'origin/develop'
* origin/develop:
  chore: 发布0.3.4
  0.3.4
  chore: 更新日志
  docs: 更新文档
  chore: 修改钩子, 提交内容的同时提交文档
  fix: 修正'车牌号(新能源+非新能源)'未对长度进行限制(#107)
  chore: 更新主页
2020-06-14 10:29:30 +08:00
any86
b313517b61 chore: 发布0.3.4 2020-06-14 09:47:30 +08:00
any86
12b872668a 0.3.4 2020-06-14 09:45:00 +08:00
any86
d85a49e264 chore: 更新日志 2020-06-14 09:43:48 +08:00
any86
d983a759bf docs: 更新文档 2020-06-14 09:38:44 +08:00
any86
6d3e459fdc chore: 修改钩子, 提交内容的同时提交文档 2020-06-14 09:38:26 +08:00
any86
925765b36c fix: 修正'车牌号(新能源+非新能源)'未对长度进行限制(#107) 2020-06-14 08:51:56 +08:00
any86
d080694aa4 Merge remote-tracking branch 'origin/develop'
* origin/develop:
  chore: 更新主页
2020-06-10 10:47:46 +08:00
any86
b5d4dea6e7 chore: 更新主页 2020-06-10 10:45:38 +08:00
any86
9b1cf30a88 Merge remote-tracking branch 'origin/develop'
* origin/develop:
  chore: 更新文档
  fix: 修正"身份证"中月份可以匹配00月的bug(#106)
  匹配连续重复的字符
  fix: 座机支持4位区号,8位电话号
  fix: 根据用户需求, "qq@qq"样式的email邮箱地址不再通过验证(#92)
  0.3.3
  chore: vsce package  --yarn
  chore: 更新包
  chore: 更新日志
  chore(ci): 更新action的version字段为node-version
  chore(ci): gh-pages分支不再进行ci
  docs: 更新主页
2020-06-10 09:32:10 +08:00
any86
d88ee6bc61 chore: 更新文档 2020-06-10 09:26:54 +08:00
any86
ad6ec26f4d Merge branch 'develop' of https://github.com/any86/any-rule into develop 2020-06-10 09:20:44 +08:00
any86
65db6a71d4 fix: 修正"身份证"中月份可以匹配00月的bug(#106) 2020-06-10 09:20:37 +08:00
any86
ac9456112d
Update README.md 2020-05-26 22:29:16 +08:00
any86
d42d41905f
Merge pull request #100 from notbucai/patch-1
feat: 新增"匹配连续重复的字符"
2020-05-26 16:49:14 +08:00
不才
bafde51f5d
匹配连续重复的字符
匹配连续重复的字符
2020-05-26 16:47:24 +08:00
any86
e19d9b96e3
Merge pull request #95 from 2017noobman/develop
fix: 座机支持4位区号,8位电话号
2020-05-12 10:51:04 +08:00
2017noobman
b5fb07cd10 fix: 座机支持4位区号,8位电话号 2020-05-11 13:52:36 +08:00
any86
24e1d23e61 fix: 根据用户需求, "qq@qq"样式的email邮箱地址不再通过验证(#92) 2020-05-08 09:17:24 +08:00
any86
d9f81e897c 0.3.3 2020-04-29 13:29:36 +08:00
any86
6ce9975541 chore: vsce package --yarn 2020-04-29 13:28:36 +08:00
any86
dad4310eae chore: 更新包 2020-04-29 13:23:26 +08:00
any86
d2fd642068 chore: 更新日志 2020-04-28 15:55:58 +08:00
any86
7a938d68b1 chore(ci): 更新action的version字段为node-version 2020-04-28 11:40:59 +08:00
any86
d7be5fc5b7 chore(ci): gh-pages分支不再进行ci 2020-04-28 10:11:11 +08:00
any86
34c28d1bd4 docs: 更新主页 2020-04-28 10:05:21 +08:00
any86
1ea809ce50
Merge pull request #89 from kingmui/hotfix/match-error
fix: fix HTML comment | Tel | password matching problem
2020-04-26 17:19:04 +08:00
kingmui
2534905ff2 fix: 修复html注释|座机|密码匹配问题 2020-04-25 22:56:23 +08:00
any86
ccb17d5ed0
Update README.md 2020-04-22 08:44:58 +08:00
any86
3e33f5d6c5
Update README.md 2020-04-22 08:44:39 +08:00
any86
b6c4900589
Update README.md 2020-04-22 08:43:55 +08:00
any86
d19c9b0c44
Update README.md 2020-04-22 08:41:05 +08:00
any86
9fd67bb2d2
Update README.md 2020-04-22 08:37:10 +08:00
any86
d97232aaf9
Update README.md 2020-04-22 08:36:47 +08:00
any86
cc5dd3b88e
Merge pull request #83 from any86/dependabot/npm_and_yarn/https-proxy-agent-2.2.4
chore(deps): bump https-proxy-agent from 2.2.2 to 2.2.4
2020-04-21 08:42:04 +08:00
dependabot[bot]
94fa77e263
chore(deps): bump https-proxy-agent from 2.2.2 to 2.2.4
Bumps [https-proxy-agent](https://github.com/TooTallNate/node-https-proxy-agent) from 2.2.2 to 2.2.4.
- [Release notes](https://github.com/TooTallNate/node-https-proxy-agent/releases)
- [Commits](https://github.com/TooTallNate/node-https-proxy-agent/compare/2.2.2...2.2.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-04-16 19:17:40 +00:00
any86
8ce7d5e1e2 pref: 精准身份证中日期的约束(#78) 2020-04-10 23:36:03 +08:00
any86
4e164a4774
Merge pull request #79 from notbucai/master
feat: 新增"mac地址"正则
2020-04-10 23:25:38 +08:00
any86
665a87e5db fix: 修改一代身份证匹配15个0的bug(#78) 2020-04-10 23:19:10 +08:00
bucai
e7ff5c8dd1 mac地址 2020-04-10 16:21:47 +08:00
383514580
3e49681a19 chore: 删除无用的测试代码 2020-04-04 22:21:47 +08:00
383514580
cd97f8d574 Merge branch 'master' into develop 2020-04-04 22:18:47 +08:00
383514580
35f5f1d2fc chore: 修改脚本命令名称 2020-04-04 22:18:30 +08:00
any86
425ea17d8c
Merge pull request #77 from any86/dependabot/npm_and_yarn/acorn-6.4.1
chore(deps): bump acorn from 6.4.0 to 6.4.1
2020-04-04 19:35:23 +08:00
any86
ee615f64c7 chore: 升级circile中node的版本 2020-04-03 09:30:24 +08:00
any86
ed30dde1ec 0.3.2 2020-04-03 09:27:25 +08:00
any86
67c2db0259 pref: 部分正则标题增加"英文关键字", 方便检索 2020-04-03 09:27:13 +08:00
any86
63c7582ee3 chore: 修改文档 2020-04-03 09:17:54 +08:00
any86
43a999820b chore: 修改circle ci 的image为node:last 2020-04-03 09:16:35 +08:00
any86
6674643359 wip: 建设pwa 2020-04-03 09:03:20 +08:00
383514580
55774c177a Merge branch 'master' into develop 2020-04-01 23:04:35 +08:00
383514580
f3e782d4ae fix: 修复"linux文件夹"正则不能匹配"/"(#76) 2020-03-29 22:54:10 +08:00
dependabot[bot]
730355fb2a
chore(deps): bump acorn from 6.4.0 to 6.4.1
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-28 14:13:15 +00:00
383514580
33a8980c12 Merge commit '9142b75c64d90f12469cc18d176bc8b022050e98' 2020-03-28 22:12:27 +08:00
383514580
ecd2bfe089 wip 2020-03-28 22:11:21 +08:00
383514580
9142b75c64 chore: 更新command 2020-03-12 15:31:41 +08:00
383514580
cc47d7b7ec 0.3.1 2020-03-12 15:29:52 +08:00
383514580
ffa8c3e994 chore: 增加vsce 2020-03-12 15:29:45 +08:00
383514580
aee4a2793a chore: 更新日志 2020-03-12 15:24:52 +08:00
383514580
92f0a16f31 chore: 修改首页 2020-03-12 15:19:48 +08:00
宁宁
97866c3869 refactor: 新增'linux"隐藏文件"路径'(#72) 2020-03-09 23:49:14 +08:00
383514580
3ae26610b4 style: 修改"图解正则"emoji 2020-03-09 13:35:03 +08:00
383514580
f0834b125c pref: 增加对配置变化的监听 2020-03-09 13:34:43 +08:00
宁宁
eee0c13d93 Merge remote-tracking branch 'origin/develop'
* origin/develop:
  docs: 更新文档
  chore: 删除语言配置功能
  chore: 更新文档
  0.3.0
  0.3.0-beta
  chore: 更新日志
  feat: 增加通过菜单唤醒列表
  refactor: 修改文案
  chore: 修改默认触发字符串为"@zz"
2020-02-28 12:32:25 +08:00
宁宁
0659a4d1f1 docs: 更新文档 2020-02-28 10:23:12 +08:00
宁宁
6a34340d32 chore: 删除语言配置功能 2020-02-28 09:57:46 +08:00
宁宁
d343e63e00 chore: 更新文档 2020-02-28 00:26:00 +08:00
宁宁
052bca3dc4 0.3.0 2020-02-28 00:07:45 +08:00
宁宁
9ac7d7ae93 0.3.0-beta 2020-02-28 00:07:41 +08:00
宁宁
87f09492c1 chore: 更新日志 2020-02-28 00:04:48 +08:00
宁宁
de5652d674 feat: 增加通过菜单唤醒列表 2020-02-27 23:57:07 +08:00
宁宁
37657b15d2 refactor: 修改文案 2020-02-27 23:26:17 +08:00
宁宁
7213d881d9 chore: 修改默认触发字符串为"@zz" 2020-02-27 23:26:04 +08:00
宁宁
4a6dd1d5ee Merge remote-tracking branch 'origin/develop'
* origin/develop: (47 commits)
  0.2.0
  chore: 修改版本和日志为0.2.0
  0.1.4
  chore(build): 使用webpack打包减小体积
  chore:删除无用
  0.1.3
  chore:  修改忽略
  chore: 修改文档生成器
  0.1.1
  refactor: 对点击按钮日志记录
  chore: 更新日志
  chore: 更新文档脚本
  refactor: 增加"🦕图解正则"按钮
  chore: 更新文档生成脚本
  chore: 忽略node_modules
  chore: 修改文档生成器和版本号
  0.0.15
  0.0.14
  chore: 调整"scripts"字段顺序
  chore: 更新文档生成脚本
  ...

# Conflicts:
#	package.json
2020-02-23 16:40:51 +08:00
宁宁
de027c7be3 0.2.0 2020-02-23 16:24:29 +08:00
宁宁
954c4ad67f chore: 修改版本和日志为0.2.0 2020-02-23 16:22:35 +08:00
宁宁
76fa3c0eb4 0.1.4 2020-02-23 16:18:40 +08:00
宁宁
ca52070798 chore(build): 使用webpack打包减小体积 2020-02-23 16:18:33 +08:00
宁宁
b8e6d63f69 chore:删除无用 2020-02-23 16:01:15 +08:00
宁宁
99b6a9a177 0.1.3 2020-02-23 06:08:51 +08:00
宁宁
8336a0cf1c chore: 修改忽略 2020-02-23 06:08:42 +08:00
宁宁
896481e783 0.0.14 2020-02-23 04:11:45 +08:00
宁宁
6f159c8457 chore: 修改文档生成器 2020-02-23 03:17:23 +08:00
30 changed files with 4484 additions and 22048 deletions

View File

@ -5,9 +5,13 @@
version: 2 version: 2
jobs: jobs:
build: build:
filters:
branches:
ignore:
- gh-pages
docker: docker:
# specify the version you desire here # specify the version you desire here
- image: circleci/node:8.9.4 - image: circleci/node:12.14.1
# Specify service dependencies here if necessary # Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images # CircleCI maintains a library of pre-built images
@ -26,7 +30,7 @@ jobs:
# - run: yarn install # - run: yarn install
# - run: yarn add codecov # - run: yarn add codecov
- run: yarn add chalk - run: yarn add chalk@2.4.2

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
packages/*/** linguist-vendored

View File

@ -12,7 +12,7 @@ jobs:
- name: Use Node.js 10.x - name: Use Node.js 10.x
uses: actions/setup-node@v1 uses: actions/setup-node@v1
with: with:
version: 10.x node-version: 10.x
- name: test - name: test
run: | run: |
npm i npm i

7
.gitignore vendored
View File

@ -1,5 +1,12 @@
out out
node_modules node_modules
coverage
.nyc_output
.vscode-test/ .vscode-test/
.idea
.vscode
.DS_Store
*.vsix *.vsix
yarn-error.log yarn-error.log
.rpt2_cache
dist

View File

@ -1,7 +1,79 @@
# 更新日志 # 更新日志
🚀 [提交问题](https://github.com/any86/any-rule/issues/new) 🚀 [提交问题](https://github.com/any86/any-rule/issues/new)
### 0.1.1 (2020-02-20) ### 0.3.18(2022-11-07)
- 优化数字/货币金额(支持负数、千分位分隔符)
- 优化小数(支持科学计数)
- 优化缩短"用户名校验"正则长度
- 增加户口薄正则
- 增加军官证正则
- 修复MAC地址的第二位一定是偶数(#264)
### 0.3.13(2022-01-10)
- 修正"网址"正则, 兼容更多符合的网址.
- 修正澳门身份证错误.
### 0.3.12(2021-10-20)
- 修复网址中带有"()"不能通过.
- 新增"整数"/"浮点数"等正则.
### 0.3.11(2021-09-26)
- 修复新版vscode中"@zz"字符失效.
- 优化"身份证15/18"正则.
### 0.3.10(2021-05-28)
- 禁止"日期"可以通过"00"月和"00"日
### 0.3.9(2021-04-20)
- 新增"GUID/UUID"正则.
- 修复ip中的"."没有被转义.
### 0.3.8(2021-01-17)
- 优化一些冗余的正则拼写
- 修复新能源汽车不匹配第三位为字母的情况.
- 座机电话兼容带分机号的情况.
### 0.3.7(2020-11-25)
- 修复"IPv4"不严格, 且增加端口校验.
- 新增"座机电话(区号可选)"
### 0.3.6(2020-08-03)
- 新增"港澳台身份证"
### 0.3.5(2020-07-18)
- 修复"车牌号"可以通过"浙苏H6F681"的问题
- 新增"数字和英文字母组成,并且同时含有数字和英文字母"
### 0.3.4(2020-06-14)
- 修正"车牌号(新能源+非新能源)"未对长度进行限制.
- 修正"身份证"中月份可以匹配00月的bug.
- 新增"匹配连续重复的字符"正则.
- 修正座机支持4位区号8位电话号.
- 修正, 根据用户需求, "qq@qq"样式的email邮箱地址不再通过验证.
### 0.3.3(2020-04-28)
- 优化增加"身份证中日期的约束".
- 优化"html注释|座机|密码"等正则.
- 新增"mac地址"正则.
### 0.3.2(2020-04-03)
- 修复"linux文件夹"正则不能匹配"/".
- 部分正则标题增加"英文关键字", 方便检索.
### 0.3.1 (2020-03-12)
- 修复"@zz唤醒"和"菜单唤醒"在某些机型下失效的bug.
- 修复"设置后未生效".
- 修改部分提示图标.
- 合并'linux文件'和'linux文件夹'正则.
- 新增'linux隐藏文件'正则.
### 0.3.0 (2020-02-28)
- 修改"zz."触发为"@zz"触发.
- 增加右键唤醒正则菜单.
![](https://user-gold-cdn.xitu.io/2020/2/28/1708764046b38231?w=381&h=413&f=png&s=73047)
### 0.2.0 (2020-02-21)
- 优化"zz."体验, 改用"quickPick"组件以支持"模糊搜索". - 优化"zz."体验, 改用"quickPick"组件以支持"模糊搜索".
![gif](https://user-gold-cdn.xitu.io/2020/2/23/1706df78b18466fd?w=954&h=372&f=gif&s=1732199) ![gif](https://user-gold-cdn.xitu.io/2020/2/23/1706df78b18466fd?w=954&h=372&f=gif&s=1732199)
@ -10,6 +82,7 @@
![](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) ![](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563)
![](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) ![](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210)
### 0.1.0 ### 0.1.0
- 新增支持在代码任意位置输入"zz."唤醒正则列表. - 新增支持在代码任意位置输入"zz."唤醒正则列表.

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Russell
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

283
README.md
View File

@ -1,39 +1,62 @@
# 正则大全 ![已收录61条](https://img.shields.io/badge/已收录-61条-673ab7.svg) [![版本](https://badgen.net/vs-marketplace/v/russell.any-rule)](https://marketplace.visualstudio.com/items?itemName=russell.any-rule) [![安装量](https://badgen.net/vs-marketplace/i/russell.any-rule)](https://marketplace.visualstudio.com/items?itemName=russell.any-rule) [![下载量](https://badgen.net/vs-marketplace/d/russell.any-rule)](https://marketplace.visualstudio.com/items?itemName=russell.any-rule) ![MIT](https://img.shields.io/badge/license-MIT-F44336.svg) [![CircleCI](https://badgen.net/github/status/any86/any-rule/master/ci/circleci)](https://circleci.com/gh/any86/any-rule) # 正则大全 ![已收录84条](https://img.shields.io/badge/已收录-84条-673ab7.svg) [![版本](https://badgen.net/vs-marketplace/v/russell.any-rule)](https://marketplace.visualstudio.com/items?itemName=russell.any-rule) [![安装量](https://badgen.net/vs-marketplace/i/russell.any-rule)](https://marketplace.visualstudio.com/items?itemName=russell.any-rule) [![下载量](https://badgen.net/vs-marketplace/d/russell.any-rule)](https://marketplace.visualstudio.com/items?itemName=russell.any-rule) ![MIT](https://img.shields.io/badge/license-MIT-F44336.svg) [![CircleCI](https://badgen.net/github/status/any86/any-rule/master/ci/circleci)](https://circleci.com/gh/any86/any-rule)
支持**web** / **vscode插件**2种查询方式. 🦕支持**web** / **vscode** / **idea** / **Alfred Workflow**多平台
## :rocket:web版本 ## :rocket:web版本
https://any86.github.io/any-rule/ https://any-rule.vercel.app/
## 🍭vscode插件 ## 🍭vscode插件
### 安装 ### 安装
vscode应用商店中搜索"**any-rule**". vscode应用商店中搜索"**any-rule**".
### 使用 ### 使用
**方式1:** **方式1:**
1. 安装完毕后按**F1**(或者ctrl+shift+p).
2. 输入"**zz**"弹出正则列表.
3. **输入关键词搜索**, 比如"手机".
![预览gif](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162) 1. 按**F1**(mac下fn+F1)打开正则列表.
2. **输入关键词搜索**, 比如"手机".
![GIF](https://user-images.githubusercontent.com/8264787/146724787-888a8666-5d2a-4e5e-b383-aec7c53bd312.gif)
**方式2:** **方式2:**
1. 在代码的任意位置输入"**zz.**"弹出正则列表. 右键选择"🦕正则大全".
2. **输入关键词搜索**, 比如"手机".
![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706df78b18466fd?w=954&h=372&f=gif&s=1732199) ![GIF](https://user-images.githubusercontent.com/8264787/146725447-4d92caed-2dd0-4f11-91d1-8da9cd8ff08b.gif)
## 🦕图解正则 **方式3:**
在vscode中选择正则后, 可点击"🦕图解正则".
![](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) 在代码任意位置输入"**@zz**".
![GIF](https://user-images.githubusercontent.com/8264787/146725402-30b34119-b709-4d49-adb2-af8dbb786d3b.gif)
## 👩‍🏫图解正则
<details>
<summary>查看详情</summary>
每次在any-rule中选择正则后会弹出提示, 可点击"🤖图解正则".
![image](https://user-images.githubusercontent.com/8264787/146726200-d97e48c3-df76-4531-8210-b6935fffb997.png)
点击后可以看到正则解析, 方便大家学习. 点击后可以看到正则解析, 方便大家学习.
![](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) ![image](https://user-images.githubusercontent.com/8264787/146726350-58166bf9-7f7f-4685-86aa-f055d0c0b914.png)
**注意**: 图解直接使用了https://regexper.com, 在此对作者表示敬意和感谢. **注意**: 图解直接使用了https://regexper.com, 在此对作者表示敬意和感谢.
</details>
## 社区版本
社区版本非本人维护, 只是其他开发者使用了any-rule整理的正则内容, 如使用出现问题可直接与其开发者联系.
[idea版](https://github.com/zhoriya/idea-rule)
[Alfred Workflow版](https://github.com/cccyb/workflows)
[hyjs: 函数封装版](https://github.com/heiyehk/hyjs/tree/main/packages/utils)
[命令行版本](https://github.com/shenguanjiejie/workwork)
[uTools版本](https://github.com/trentlee0/utools-any-rule)
## :fire:关于PR ## :fire:关于PR
欢迎大家PR, 步骤如下: 欢迎大家PR, 步骤如下:
@ -44,25 +67,6 @@ vscode应用商店中搜索"**any-rule**".
在此感谢大家对**any-rule**做出的贡献! 在此感谢大家对**any-rule**做出的贡献!
## 👽主要开发者
按照加入时间排序
<table>
<tr>
<td>
<a href="https://github.com/MrTenger"><img width="60" src="https://avatars3.githubusercontent.com/u/10781715?s=60&v=4"></a>
</td>
<td>
<a href="https://github.com/giraffeComing"><img width="60" src="https://avatars2.githubusercontent.com/u/14800669?s=460&v=4"></a>
</td>
<td>
<a href="https://github.com/microud"><img width="60" src="https://avatars1.githubusercontent.com/u/10163257?s=60&v=4"></a>
</td>
<td>
<a href="https://github.com/52cik"><img width="60" src="https://avatars0.githubusercontent.com/u/5033310?s=60&v=4"></a>
</td>
</tr>
</table>
## 🍔正则 ## 🍔正则
### 火车车次 ### 火车车次
@ -80,9 +84,9 @@ vscode应用商店中搜索"**any-rule**".
/^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/ /^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/
``` ```
### 网址(支持端口和"?+参数"和"#+参数) ### 网址(URL)
```javascript ```javascript
/^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/ /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/
``` ```
### 统一社会信用代码 ### 统一社会信用代码
@ -90,6 +94,11 @@ vscode应用商店中搜索"**any-rule**".
/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/ /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
``` ```
### 统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)
```javascript
/^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$/
```
### 迅雷链接 ### 迅雷链接
```javascript ```javascript
/^thunderx?:\/\/[a-zA-Z\d]+=$/ /^thunderx?:\/\/[a-zA-Z\d]+=$/
@ -105,19 +114,24 @@ vscode应用商店中搜索"**any-rule**".
/^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/ /^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/
``` ```
### 子网掩码 ### 子网掩码(不包含 0.0.0.0)
```javascript ```javascript
/^(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/ /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/
``` ```
### linux"文件"路径 ### linux"隐藏文件"路径
```javascript ```javascript
/^(\/[^/]+)+\/?$/ /^\/(?:[^/]+\/)*\.[^/]*/
``` ```
### linux"文件"路径 ### linux文件夹路径
```javascript ```javascript
/^(\/[^/]+)+$/ /^\/(?:[^/]+\/)*$/
```
### linux文件路径
```javascript
/^\/(?:[^/]+\/)*[^/]+$/
``` ```
### window"文件夹"路径 ### window"文件夹"路径
@ -137,30 +151,35 @@ vscode应用商店中搜索"**any-rule**".
### 大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数 ### 大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数
```javascript ```javascript
/^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:.5)?$/ /^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$/
``` ```
### html注释 ### html注释
```javascript ```javascript
/<!--[\s\S]*?-->/ /<!--[\s\S]*?-->/g
``` ```
### md5格式(32位) ### md5格式(32位)
```javascript ```javascript
/^([a-f\d]{32}|[A-F\d]{32})$/ /^[a-fA-F0-9]{32}$/
``` ```
### 版本号格式必须为X.Y.Z ### GUID/UUID
```javascript
/^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$/i
```
### 版本号(version)格式必须为X.Y.Z
```javascript ```javascript
/^\d+(?:\.\d+){2}$/ /^\d+(?:\.\d+){2}$/
``` ```
### 视频链接地址(视频格式可按需增删) ### 视频(video)链接地址(视频格式可按需增删)
```javascript ```javascript
/^https?:\/\/(.+\/)+.+(\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i /^https?:\/\/(.+\/)+.+(\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i
``` ```
### 图片链接地址(图片格式可按需增删) ### 图片(image)链接地址(图片格式可按需增删)
```javascript ```javascript
/^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i /^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i
``` ```
@ -182,12 +201,7 @@ vscode应用商店中搜索"**any-rule**".
### 数字/货币金额(支持负数、千分位分隔符) ### 数字/货币金额(支持负数、千分位分隔符)
```javascript ```javascript
/^-?\d+(,\d{3})*(\.\d{1,2})?$/ /^-?\d{1,3}(,\d{3})*(\.\d{1,2})?$/
```
### 数字/货币金额 (只支持正数、不支持校验千分位分隔符)
```javascript
/(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/
``` ```
### 银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1) ### 银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)
@ -202,67 +216,82 @@ vscode应用商店中搜索"**any-rule**".
### 英文姓名 ### 英文姓名
```javascript ```javascript
/(^[a-zA-Z]{1}[a-zA-Z\s]{0,20}[a-zA-Z]{1}$)/ /(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$)/
``` ```
### 车牌号(新能源) ### 车牌号(新能源)
```javascript ```javascript
/[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))$/ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/
``` ```
### 车牌号(非新能源) ### 车牌号(非新能源)
```javascript ```javascript
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/
``` ```
### 车牌号(新能源+非新能源) ### 车牌号(新能源+非新能源)
```javascript ```javascript
/^(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(?:(?:[0-9]{5}[DF])|(?:[DF](?:[A-HJ-NP-Z0-9])[0-9]{4})))|(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})$/ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/
``` ```
### 手机号中国(严谨), 根据工信部2019年最新公布的手机号段 ### 手机号(mobile phone)中国(严谨), 根据工信部2019年最新公布的手机号段
```javascript ```javascript
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/ /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[01256789]))\d{8}$/
``` ```
### 手机号中国(宽松), 只要是13,14,15,16,17,18,19开头即可 ### 手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可
```javascript ```javascript
/^(?:(?:\+|00)86)?1[3-9]\d{9}$/ /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
``` ```
### 手机号中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条 ### 手机号(mobile phone)中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条
```javascript ```javascript
/^(?:(?:\+|00)86)?1\d{10}$/ /^(?:(?:\+|00)86)?1\d{10}$/
``` ```
### 日期 ### 日期(宽松)
```javascript ```javascript
/^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/ /^\d{1,4}(-)(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31)$/
```
### 日期(严谨, 支持闰年判断)
```javascript
/^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/
```
### 中国省
```javascript
/^浙江|上海|北京|天津|重庆|黑龙江|吉林|辽宁|内蒙古|河北|新疆|甘肃|青海|陕西|宁夏|河南|山东|山西|安徽|湖北|湖南|江苏|四川|贵州|云南|广西|西藏|江西|广东|福建|台湾|海南|香港|澳门$/
```
### 可以被moment转化成功的时间 YYYYMMDD HH:mm:ss
```javascript
/^\d{4}([/:-\S])(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/
``` ```
### email(邮箱) ### email(邮箱)
```javascript ```javascript
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
``` ```
### 座机电话(国内),如: 0341-86091234 ### 座机(tel phone)电话(国内),如: 0341-86091234
```javascript ```javascript
/\d{3}-\d{8}|\d{4}-\d{7}/ /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/
``` ```
### 身份证号(1代,15位数字) ### 身份证号(1代,15位数字)
```javascript ```javascript
/^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$/ /^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2][\d]|30|31)\d{3}$/
``` ```
### 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X ### 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X
```javascript ```javascript
/^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}[\dXx]$/ /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/
``` ```
### 身份证号, 支持1/2代(15位/18位数字) ### 身份证号, 支持1/2代(15位/18位数字)
```javascript ```javascript
/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/ /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/
``` ```
### 护照(包含香港、澳门) ### 护照(包含香港、澳门)
@ -280,14 +309,14 @@ vscode应用商店中搜索"**any-rule**".
/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/ /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/
``` ```
### 小数 ### 小数(支持科学计数)
```javascript ```javascript
/^\d+\.\d+$/ /^[+-]?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)$/
``` ```
### 数字 ### 只包含数字
```javascript ```javascript
/^\d{1,}$/ /^\d+$/
``` ```
### html标签(宽松匹配) ### html标签(宽松匹配)
@ -295,6 +324,11 @@ vscode应用商店中搜索"**any-rule**".
/<(\w+)[^>]*>(.*?<\/\1>)?/ /<(\w+)[^>]*>(.*?<\/\1>)?/
``` ```
### 匹配中文汉字和中文标点
```javascript
/[\u4e00-\u9fa5|\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/
```
### qq号格式正确 ### qq号格式正确
```javascript ```javascript
/^[1-9][0-9]{4,10}$/ /^[1-9][0-9]{4,10}$/
@ -322,30 +356,30 @@ vscode应用商店中搜索"**any-rule**".
### 密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符 ### 密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符
```javascript ```javascript
/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/ /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/
``` ```
### 用户名校验4到16位字母数字下划线减号 ### 用户名校验4到16位字母数字下划线减号
```javascript ```javascript
/^[a-zA-Z0-9_-]{4,16}$/ /^[\w-]{4,16}$/
``` ```
### ip-v4 ### ip-v4[:端口]
```javascript ```javascript
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/
``` ```
### ip-v6 ### ip-v6[:端口]
```javascript ```javascript
/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i /(^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$)|(^\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$)/i
``` ```
### 16进制颜色 ### 16进制颜色
```javascript ```javascript
/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}|[a-fA-F0-9]{8}|[a-fA-F0-9]{4})$/
``` ```
### 微信号6至20位以字母开头字母数字减号下划线 ### 微信号(wx)6至20位以字母开头字母数字减号下划线
```javascript ```javascript
/^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/ /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/
``` ```
@ -367,5 +401,90 @@ vscode应用商店中搜索"**any-rule**".
### java包名 ### java包名
```javascript ```javascript
/^([a-zA-Z_][a-zA-Z0-9_]*)+([.][a-zA-Z_][a-zA-Z0-9_]*)+$/ /^([a-zA-Z_]\w*)+([.][a-zA-Z_]\w*)+$/
```
### mac地址
```javascript
/^(([a-f0-9][0,2,4,6,8,a,c,e]:([a-f0-9]{2}:){4})|([a-f0-9][0,2,4,6,8,a,c,e]-([a-f0-9]{2}-){4}))[a-f0-9]{2}$/i
```
### 匹配连续重复的字符
```javascript
/(.)\1+/
```
### 数字和英文字母组成,并且同时含有数字和英文字母
```javascript
/^(?=.*[a-zA-Z])(?=.*\d).+$/
```
### 香港身份证
```javascript
/^[a-zA-Z]\d{6}\([\dA]\)$/
```
### 澳门身份证
```javascript
/^[1|5|7]\d{6}\(\d\)$/
```
### 台湾身份证
```javascript
/^[a-zA-Z][0-9]{9}$/
```
### 大写字母,小写字母,数字,特殊符号 `@#$%^&*`~()-+=` 中任意3项密码
```javascript
/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]/
```
### ASCII码表中的全部的特殊字符
```javascript
/[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+/
```
### 正整数不包含0
```javascript
/^\+?[1-9]\d*$/
```
### 负整数不包含0
```javascript
/^-[1-9]\d*$/
```
### 整数
```javascript
/^(?:0|(?:-?[1-9]\d*))$/
```
### 浮点数
```javascript
/^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*|0\.0+)$/
```
### 浮点数(严格)
```javascript
/^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$/
```
### email(支持中文邮箱)
```javascript
/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
```
### 域名(非网址, 不包含协议)
```javascript
/^([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})$/
```
### 军官/士兵证
```javascript
/^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/
```
### 户口薄
```javascript
/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
``` ```

View File

@ -3,21 +3,35 @@
"publisher": "russell", "publisher": "russell",
"displayName": "any-rule", "displayName": "any-rule",
"description": "你要的\"正则\"都在这!", "description": "你要的\"正则\"都在这!",
"version": "0.1.1", "version": "0.3.18",
"keywords": [
"vscode",
"typescript",
"regxp",
"正则"
],
"husky": {
"hooks": {
"pre-push": "npm run test:rules"
}
},
"scripts": { "scripts": {
"build:md": "node ./scripts/md.js", "build:md": "node ./scripts/md.js",
"build": "npm run test:rules && npm version patch && node ./scripts/genCommond.js && vsce package && npm run build:md", "build": "npm run test:rules && npm version patch && node ./scripts/genCommond.js && vsce package --yarn && npm run build:md",
"vscode:prepublish": "npm run compile", "vscode:prepublish": "npm run compile",
"compile": "tsc -p ./", "compile": "webpack --mode production",
"watch": "tsc -watch -p ./", "watch": "tsc -watch -p ./",
"pretest": "npm run compile", "pretest": "npm run compile",
"test": "node ./out/test/runTest.js", "test": "node ./out/test/runTest.js",
"test:rules": "node __test__/rule" "test:rules": "node __test__/rule",
"release:demo": "cd packages/www && yarn release",
"dev:demo": "cd packages/www && yarn serve"
}, },
"engines": { "engines": {
"vscode": "^1.12.0" "vscode": "^1.12.0"
}, },
"categories": [ "categories": [
"Snippets",
"Other" "Other"
], ],
"icon": "images/vscode-logo.png", "icon": "images/vscode-logo.png",
@ -26,7 +40,7 @@
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/any86/any-rule.git" "url": "https://github.com/any86/any-rule.git"
}, },
"activationEvents": [ "activationEvents": [
"*" "*"
@ -37,18 +51,27 @@
"type": "object", "type": "object",
"title": "any-rule", "title": "any-rule",
"properties": { "properties": {
"AnyRule.triggerString": { "any-rule.triggerString": {
"type": "string", "type": "string",
"default": "zz.", "default": "@zz",
"description": "触发字符串" "description": "触发字符串"
}, },
"AnyRule.supportedLanguages": { "any-rule.supportedLanguages": {
"type": "string", "type": "string",
"default": "*, javascript, typescript, javascriptreact, typescriptreact, markdown, jsx, vue, html, json, plaintext, coffeescript", "default": "*,javascript,javascriptreact,typescript,typescriptreact,vue,vue-postcss,vue-sugarss,vue-html,json,jsonc,graphql,dart,sql,go,java,php,jade,python,swift,markdown",
"description": "如果您的文件格式未被支持, 请在此处添加(⚡添加成功后需要重启vscode)" "description": "支持的开发语言(用','分割)"
} }
} }
}, },
"menus": {
"editor/context": [
{
"when": "editorFocus",
"command": "extension.rule.callByMenu",
"group": "navigation"
}
]
},
"commands": [ "commands": [
{ {
"command": "extension.rule0", "command": "extension.rule0",
@ -64,7 +87,7 @@
}, },
{ {
"command": "extension.rule3", "command": "extension.rule3",
"title": "$(rocket) zz: 网址(支持端口和\"?+参数\"和\"#+参数)" "title": "$(rocket) zz: 网址(URL)"
}, },
{ {
"command": "extension.rule4", "command": "extension.rule4",
@ -72,227 +95,323 @@
}, },
{ {
"command": "extension.rule5", "command": "extension.rule5",
"title": "$(rocket) zz: 迅雷链接" "title": "$(rocket) zz: 统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)"
}, },
{ {
"command": "extension.rule6", "command": "extension.rule6",
"title": "$(rocket) zz: ed2k链接(宽松匹配)" "title": "$(rocket) zz: 迅雷链接"
}, },
{ {
"command": "extension.rule7", "command": "extension.rule7",
"title": "$(rocket) zz: 磁力链接(宽松匹配)" "title": "$(rocket) zz: ed2k链接(宽松匹配)"
}, },
{ {
"command": "extension.rule8", "command": "extension.rule8",
"title": "$(rocket) zz: 子网掩码" "title": "$(rocket) zz: 磁力链接(宽松匹配)"
}, },
{ {
"command": "extension.rule9", "command": "extension.rule9",
"title": "$(rocket) zz: linux\"文件夹\"路径" "title": "$(rocket) zz: 子网掩码(不包含 0.0.0.0)"
}, },
{ {
"command": "extension.rule10", "command": "extension.rule10",
"title": "$(rocket) zz: linux\"文件\"路径" "title": "$(rocket) zz: linux\"隐藏文件\"路径"
}, },
{ {
"command": "extension.rule11", "command": "extension.rule11",
"title": "$(rocket) zz: window\"文件夹\"路径" "title": "$(rocket) zz: linux文件夹路径"
}, },
{ {
"command": "extension.rule12", "command": "extension.rule12",
"title": "$(rocket) zz: window下\"文件\"路径" "title": "$(rocket) zz: linux文件路径"
}, },
{ {
"command": "extension.rule13", "command": "extension.rule13",
"title": "$(rocket) zz: 股票代码(A股)" "title": "$(rocket) zz: window\"文件夹\"路径"
}, },
{ {
"command": "extension.rule14", "command": "extension.rule14",
"title": "$(rocket) zz: 大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数" "title": "$(rocket) zz: window下\"文件\"路径"
}, },
{ {
"command": "extension.rule15", "command": "extension.rule15",
"title": "$(rocket) zz: html注释" "title": "$(rocket) zz: 股票代码(A股)"
}, },
{ {
"command": "extension.rule16", "command": "extension.rule16",
"title": "$(rocket) zz: md5格式(32位)" "title": "$(rocket) zz: 大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数"
}, },
{ {
"command": "extension.rule17", "command": "extension.rule17",
"title": "$(rocket) zz: 版本号格式必须为X.Y.Z" "title": "$(rocket) zz: html注释"
}, },
{ {
"command": "extension.rule18", "command": "extension.rule18",
"title": "$(rocket) zz: 视频链接地址(视频格式可按需增删)" "title": "$(rocket) zz: md5格式(32位)"
}, },
{ {
"command": "extension.rule19", "command": "extension.rule19",
"title": "$(rocket) zz: 图片链接地址(图片格式可按需增删)" "title": "$(rocket) zz: GUID/UUID"
}, },
{ {
"command": "extension.rule20", "command": "extension.rule20",
"title": "$(rocket) zz: 24小时制时间HH:mm:ss" "title": "$(rocket) zz: 版本号(version)格式必须为X.Y.Z"
}, },
{ {
"command": "extension.rule21", "command": "extension.rule21",
"title": "$(rocket) zz: 12小时制时间hh:mm:ss" "title": "$(rocket) zz: 视频(video)链接地址(视频格式可按需增删"
}, },
{ {
"command": "extension.rule22", "command": "extension.rule22",
"title": "$(rocket) zz: base64格式" "title": "$(rocket) zz: 图片(image)链接地址(图片格式可按需增删)"
}, },
{ {
"command": "extension.rule23", "command": "extension.rule23",
"title": "$(rocket) zz: 数字/货币金额(支持负数、千分位分隔符" "title": "$(rocket) zz: 24小时制时间HH:mm:ss"
}, },
{ {
"command": "extension.rule24", "command": "extension.rule24",
"title": "$(rocket) zz: 数字/货币金额 (只支持正数、不支持校验千分位分隔符)" "title": "$(rocket) zz: 12小时制时间hh:mm:ss"
}, },
{ {
"command": "extension.rule25", "command": "extension.rule25",
"title": "$(rocket) zz: 银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)" "title": "$(rocket) zz: base64格式"
}, },
{ {
"command": "extension.rule26", "command": "extension.rule26",
"title": "$(rocket) zz: 中文姓名" "title": "$(rocket) zz: 数字/货币金额(支持负数、千分位分隔符)"
}, },
{ {
"command": "extension.rule27", "command": "extension.rule27",
"title": "$(rocket) zz: 英文姓名" "title": "$(rocket) zz: 银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)"
}, },
{ {
"command": "extension.rule28", "command": "extension.rule28",
"title": "$(rocket) zz: 车牌号(新能源)" "title": "$(rocket) zz: 中文姓名"
}, },
{ {
"command": "extension.rule29", "command": "extension.rule29",
"title": "$(rocket) zz: 车牌号(非新能源)" "title": "$(rocket) zz: 英文姓名"
}, },
{ {
"command": "extension.rule30", "command": "extension.rule30",
"title": "$(rocket) zz: 车牌号(新能源+非新能源)" "title": "$(rocket) zz: 车牌号(新能源)"
}, },
{ {
"command": "extension.rule31", "command": "extension.rule31",
"title": "$(rocket) zz: 手机号中国(严谨), 根据工信部2019年最新公布的手机号段" "title": "$(rocket) zz: 车牌号(非新能源)"
}, },
{ {
"command": "extension.rule32", "command": "extension.rule32",
"title": "$(rocket) zz: 手机号中国(宽松), 只要是13,14,15,16,17,18,19开头即可" "title": "$(rocket) zz: 车牌号(新能源+非新能源)"
}, },
{ {
"command": "extension.rule33", "command": "extension.rule33",
"title": "$(rocket) zz: 手机号中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条" "title": "$(rocket) zz: 手机号(mobile phone)中国(严谨), 根据工信部2019年最新公布的手机号段"
}, },
{ {
"command": "extension.rule34", "command": "extension.rule34",
"title": "$(rocket) zz: 日期" "title": "$(rocket) zz: 手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可"
}, },
{ {
"command": "extension.rule35", "command": "extension.rule35",
"title": "$(rocket) zz: email(邮箱)" "title": "$(rocket) zz: 手机号(mobile phone)中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条"
}, },
{ {
"command": "extension.rule36", "command": "extension.rule36",
"title": "$(rocket) zz: 座机电话(国内),如: 0341-86091234" "title": "$(rocket) zz: 日期(宽松)"
}, },
{ {
"command": "extension.rule37", "command": "extension.rule37",
"title": "$(rocket) zz: 身份证号(1代,15位数字)" "title": "$(rocket) zz: 日期(严谨, 支持闰年判断)"
}, },
{ {
"command": "extension.rule38", "command": "extension.rule38",
"title": "$(rocket) zz: 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X" "title": "$(rocket) zz: 中国省"
}, },
{ {
"command": "extension.rule39", "command": "extension.rule39",
"title": "$(rocket) zz: 身份证号, 支持1/2代(15位/18位数字)" "title": "$(rocket) zz: 可以被moment转化成功的时间 YYYYMMDD HH:mm:ss"
}, },
{ {
"command": "extension.rule40", "command": "extension.rule40",
"title": "$(rocket) zz: 护照(包含香港、澳门)" "title": "$(rocket) zz: email(邮箱)"
}, },
{ {
"command": "extension.rule41", "command": "extension.rule41",
"title": "$(rocket) zz: 帐号是否合法(字母开头允许5-16字节允许字母数字下划线组合" "title": "$(rocket) zz: 座机(tel phone)电话(国内),如: 0341-86091234"
}, },
{ {
"command": "extension.rule42", "command": "extension.rule42",
"title": "$(rocket) zz: 中文/汉字" "title": "$(rocket) zz: 身份证号(1代,15位数字)"
}, },
{ {
"command": "extension.rule43", "command": "extension.rule43",
"title": "$(rocket) zz: 小数" "title": "$(rocket) zz: 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X"
}, },
{ {
"command": "extension.rule44", "command": "extension.rule44",
"title": "$(rocket) zz: 数字" "title": "$(rocket) zz: 身份证号, 支持1/2代(15位/18位数字)"
}, },
{ {
"command": "extension.rule45", "command": "extension.rule45",
"title": "$(rocket) zz: html标签(宽松匹配)" "title": "$(rocket) zz: 护照(包含香港、澳门)"
}, },
{ {
"command": "extension.rule46", "command": "extension.rule46",
"title": "$(rocket) zz: qq号格式正确" "title": "$(rocket) zz: 帐号是否合法(字母开头允许5-16字节允许字母数字下划线组合"
}, },
{ {
"command": "extension.rule47", "command": "extension.rule47",
"title": "$(rocket) zz: 数字和字母组成" "title": "$(rocket) zz: 中文/汉字"
}, },
{ {
"command": "extension.rule48", "command": "extension.rule48",
"title": "$(rocket) zz: 英文字母" "title": "$(rocket) zz: 小数(支持科学计数)"
}, },
{ {
"command": "extension.rule49", "command": "extension.rule49",
"title": "$(rocket) zz: 小写英文字母组成" "title": "$(rocket) zz: 只包含数字"
}, },
{ {
"command": "extension.rule50", "command": "extension.rule50",
"title": "$(rocket) zz: 大写英文字母" "title": "$(rocket) zz: html标签(宽松匹配)"
}, },
{ {
"command": "extension.rule51", "command": "extension.rule51",
"title": "$(rocket) zz: 密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符" "title": "$(rocket) zz: 匹配中文汉字和中文标点"
}, },
{ {
"command": "extension.rule52", "command": "extension.rule52",
"title": "$(rocket) zz: 用户名校验4到16位字母数字下划线减号" "title": "$(rocket) zz: qq号格式正确"
}, },
{ {
"command": "extension.rule53", "command": "extension.rule53",
"title": "$(rocket) zz: ip-v4" "title": "$(rocket) zz: 数字和字母组成"
}, },
{ {
"command": "extension.rule54", "command": "extension.rule54",
"title": "$(rocket) zz: ip-v6" "title": "$(rocket) zz: 英文字母"
}, },
{ {
"command": "extension.rule55", "command": "extension.rule55",
"title": "$(rocket) zz: 16进制颜色" "title": "$(rocket) zz: 小写英文字母组成"
}, },
{ {
"command": "extension.rule56", "command": "extension.rule56",
"title": "$(rocket) zz: 微信号6至20位以字母开头字母数字减号下划线" "title": "$(rocket) zz: 大写英文字母"
}, },
{ {
"command": "extension.rule57", "command": "extension.rule57",
"title": "$(rocket) zz: 邮政编码(中国)" "title": "$(rocket) zz: 密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符"
}, },
{ {
"command": "extension.rule58", "command": "extension.rule58",
"title": "$(rocket) zz: 中文和数字" "title": "$(rocket) zz: 用户名校验4到16位字母数字下划线减号"
}, },
{ {
"command": "extension.rule59", "command": "extension.rule59",
"title": "$(rocket) zz: 不能包含字母" "title": "$(rocket) zz: ip-v4[:端口]"
}, },
{ {
"command": "extension.rule60", "command": "extension.rule60",
"title": "$(rocket) zz: ip-v6[:端口]"
},
{
"command": "extension.rule61",
"title": "$(rocket) zz: 16进制颜色"
},
{
"command": "extension.rule62",
"title": "$(rocket) zz: 微信号(wx)6至20位以字母开头字母数字减号下划线"
},
{
"command": "extension.rule63",
"title": "$(rocket) zz: 邮政编码(中国)"
},
{
"command": "extension.rule64",
"title": "$(rocket) zz: 中文和数字"
},
{
"command": "extension.rule65",
"title": "$(rocket) zz: 不能包含字母"
},
{
"command": "extension.rule66",
"title": "$(rocket) zz: java包名" "title": "$(rocket) zz: java包名"
},
{
"command": "extension.rule67",
"title": "$(rocket) zz: mac地址"
},
{
"command": "extension.rule68",
"title": "$(rocket) zz: 匹配连续重复的字符"
},
{
"command": "extension.rule69",
"title": "$(rocket) zz: 数字和英文字母组成,并且同时含有数字和英文字母"
},
{
"command": "extension.rule70",
"title": "$(rocket) zz: 香港身份证 "
},
{
"command": "extension.rule71",
"title": "$(rocket) zz: 澳门身份证 "
},
{
"command": "extension.rule72",
"title": "$(rocket) zz: 台湾身份证 "
},
{
"command": "extension.rule73",
"title": "$(rocket) zz: 大写字母,小写字母,数字,特殊符号 `@#$%^&*`~()-+=` 中任意3项密码"
},
{
"command": "extension.rule74",
"title": "$(rocket) zz: ASCII码表中的全部的特殊字符"
},
{
"command": "extension.rule75",
"title": "$(rocket) zz: 正整数不包含0"
},
{
"command": "extension.rule76",
"title": "$(rocket) zz: 负整数不包含0"
},
{
"command": "extension.rule77",
"title": "$(rocket) zz: 整数"
},
{
"command": "extension.rule78",
"title": "$(rocket) zz: 浮点数"
},
{
"command": "extension.rule79",
"title": "$(rocket) zz: 浮点数(严格)"
},
{
"command": "extension.rule80",
"title": "$(rocket) zz: email(支持中文邮箱)"
},
{
"command": "extension.rule81",
"title": "$(rocket) zz: 域名(非网址, 不包含协议)"
},
{
"command": "extension.rule82",
"title": "$(rocket) zz: 军官/士兵证"
},
{
"command": "extension.rule83",
"title": "$(rocket) zz: 户口薄"
},
{
"command": "extension.rule.callByMenu",
"title": "🦕正则大全(84条)"
} }
] ]
}, },
@ -302,12 +421,19 @@
"@types/node": "^10.12.21", "@types/node": "^10.12.21",
"@types/vscode": "^1.12.0", "@types/vscode": "^1.12.0",
"glob": "^7.1.4", "glob": "^7.1.4",
"husky": "^4.2.5",
"mocha": "^6.1.4", "mocha": "^6.1.4",
"qiniu-js": "^2.5.5",
"ts-loader": "^6.2.1",
"tslint": "^5.12.1", "tslint": "^5.12.1",
"typescript": "^3.3.1", "typescript": "^3.3.1",
"vscode-test": "^1.0.2" "vsce": "^1.74.0",
"vscode-test": "^1.0.2",
"webpack": "^4.41.6",
"webpack-cli": "^3.3.11"
}, },
"dependencies": { "dependencies": {
"axios": "^0.19.2",
"transliteration": "^2.1.8" "transliteration": "^2.1.8"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -5,15 +5,17 @@
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "vue-cli-service build", "build": "vue-cli-service build",
"build:demo": "npm run build && node ./scripts/demo", "release": "npm run build && node ./scripts/demo",
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint",
"rm:nm":"rimraf node_modules"
}, },
"dependencies": { "dependencies": {
"clipboard": "^2.0.4", "clipboard": "^2.0.4",
"core-js": "^2.6.5", "core-js": "^2.6.5",
"crypto-js": "^4.0.0",
"lodash": "^4.17.13", "lodash": "^4.17.13",
"node-sass": "^4.12.0", "node-sass": "^6.0.0",
"sass-loader": "^7.1.0", "sass-loader": "^10.0.0",
"vue": "^2.6.10" "vue": "^2.6.10"
}, },
"devDependencies": { "devDependencies": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -6,6 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" /> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="manifest" href="<%= BASE_URL %>manifest.json">
<title>正则大全</title> <title>正则大全</title>
<!-- 百度统计 --> <!-- 百度统计 -->
<script> <script>
@ -23,6 +24,7 @@
:root { :root {
--primary: #42b983; --primary: #42b983;
} }
* { * {
padding: 0; padding: 0;
margin: 0; margin: 0;
@ -56,12 +58,16 @@
transform: rotate(360deg); transform: rotate(360deg);
} }
} }
.loading { .loading {
animation: rotate 1s infinite linear; animation: rotate 1s infinite linear;
margin: 0; margin: 0;
padding: 0; padding: 0;
position: fixed; position: fixed;
top:0;left:0;right: 0;bottom:0; top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto; margin: auto;
display: block; display: block;
width: 100px; width: 100px;

View File

@ -0,0 +1,15 @@
{
"short_name": "any-rule",
"name": "正则大全",
"icons": [
{
"src": "/any-rule/icon.png",
"type": "image/png",
"sizes": "192x192"
}
],
"background_color": "#2196F3",
"theme_color": "#2196F3",
"display": "standalone",
"start_url": "/any-rule"
}

View File

View File

@ -1,47 +1,52 @@
<template> <template>
<main> <main>
<article class="fixed"> <article class="fixed">
<a
onclick="_hmt.push(['_trackEvent', '交互', '点击github', '悬浮'])"
href="https://github.com/any86/any-rule"
target="_blank"
class="github"
>
<svg height="20" viewBox="0 0 16 16" version="1.1" width="20" aria-hidden="true">
<path
fill-rule="evenodd"
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"
></path>
</svg>
<span>github</span>
</a>
<a <a
onclick="_hmt.push(['_trackEvent', '交互', '提问'])" onclick="_hmt.push(['_trackEvent', '交互', '提问'])"
class="message" class="message"
href="https://github.com/any86/any-rule/issues/new" href="https://github.com/any86/any-rule/issues/new"
target="_blank" target="_blank"
>提问</a> ><svg
style="margin-right: 8px"
height="24"
width="24"
viewBox="0 0 16 16"
version="1.1"
aria-hidden="true"
>
<path
fill-rule="evenodd"
fill="#fff"
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"
></path>
</svg>
提问</a
>
</article> </article>
<header> <header>
<h1>正则大全</h1>
<a <a
onclick="_hmt.push(['_trackEvent', '交互', '点击github', '头部'])" onclick="_hmt.push(['_trackEvent', '交互', '点击github', '头部'])"
style="margin-left:15px;color:#000;"
href="https://github.com/any86/any-rule" href="https://github.com/any86/any-rule"
target="_blank" target="_blank"
class="github" class="github"
> >
<svg height="20" viewBox="0 0 16 16" version="1.1" width="20" aria-hidden="true"> <!-- <svg height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true">
<path <path
fill-rule="evenodd" fill-rule="evenodd"
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"
></path> ></path>
</svg> </svg> -->
<span>github</span> <h1>🦕正则大全</h1>
</a> </a>
<iframe style="display:block;margin-top:15px;" src="https://ghbtns.com/github-btn.html?user=any86&repo=any-rule&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe> <iframe
style="display: block; margin-top: 15px"
src="https://ghbtns.com/github-btn.html?user=any86&repo=any-rule&type=star&count=true"
frameborder="0"
scrolling="0"
width="170px"
height="20px"
></iframe>
<input <input
ref="searchInput" ref="searchInput"
@ -53,7 +58,7 @@
class="search-input" class="search-input"
placeholder="搜索关键词, 如'手机'" placeholder="搜索关键词, 如'手机'"
type="text" type="text"
> />
</header> </header>
<article> <article>
@ -72,7 +77,8 @@
:href="`https://github.com/any86/any-rule/issues/new?title=我有更好的正则: ${title}`" :href="`https://github.com/any86/any-rule/issues/new?title=我有更好的正则: ${title}`"
target="_blank" target="_blank"
class="btn-better" class="btn-better"
>我有更好的正则</a> >我有更好的正则</a
>
<code ref="code" class="javascript">{{ rule }}</code> <code ref="code" class="javascript">{{ rule }}</code>
</p> </p>
<section class="verification"> <section class="verification">
@ -87,7 +93,7 @@
@compositionend="check(index, 'blur')" @compositionend="check(index, 'blur')"
@blur="check(index, 'blur')" @blur="check(index, 'blur')"
@keyup="check(index, 'keyup')" @keyup="check(index, 'keyup')"
> />
<span class="btn-clear" @click="reset(index)">清空</span> <span class="btn-clear" @click="reset(index)">清空</span>
</label> </label>
@ -101,13 +107,9 @@
<section class="trigger"> <section class="trigger">
<h3>验证时机</h3> <h3>验证时机</h3>
<label> <label> <input v-model="list[index].events.blur" type="checkbox" /> blur </label>
<input v-model="list[index].events.blur" type="checkbox"> blur
</label>
<label> <label> <input v-model="list[index].events.keyup" type="checkbox" /> keyup </label>
<input v-model="list[index].events.keyup" type="checkbox"> keyup
</label>
</section> </section>
</li> </li>
</ul> </ul>
@ -119,7 +121,6 @@
<script> <script>
import RULES from '@/RULES'; import RULES from '@/RULES';
import ClipboardJS from 'clipboard'; import ClipboardJS from 'clipboard';
// import throttle from 'lodash/throttle';
export default { export default {
name: 'app', name: 'app',
@ -129,6 +130,7 @@ export default {
Object.freeze(RULES); Object.freeze(RULES);
return { return {
token: '',
timer: null, timer: null,
keyword: '', keyword: '',
rules: RULES, rules: RULES,
@ -137,9 +139,9 @@ export default {
isOk: undefined, isOk: undefined,
events: { events: {
blur: true, blur: true,
keyup: true keyup: true,
} },
})) })),
}; };
}, },
@ -183,7 +185,7 @@ export default {
search() { search() {
if ('' !== this.keyword) { if ('' !== this.keyword) {
this.rules = this.rules.filter(({ title }) => -1 !== title.indexOf(this.keyword.toLowerCase())); this.rules = this.rules.filter(({ title }) => -1 !== title.toLowerCase().indexOf(this.keyword.toLowerCase()));
} else { } else {
this.rules = RULES; this.rules = RULES;
} }
@ -225,8 +227,8 @@ export default {
/* eslint-disable */ /* eslint-disable */
_hmt.push(['_trackEvent', 'input框', this.rules[index].title, this.list[index].value]); _hmt.push(['_trackEvent', 'input框', this.rules[index].title, this.list[index].value]);
} }
} },
} },
}; };
</script> </script>
@ -271,18 +273,17 @@ main {
z-index: 1986; z-index: 1986;
right: 15px; right: 15px;
bottom: 15px; bottom: 15px;
box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.1);
border-radius: $radius;
overflow: hidden;
> a { > a {
display: flex; display: flex;
border-radius: $radius;
align-content: center; align-content: center;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
justify-items: center; justify-items: center;
font-size: 16px; font-size: 16px;
text-align: center; text-align: center;
padding: 15px; padding: 16px;
box-shadow: 1px 2px 3px 1px rgba(0, 0, 0, 0.1);
&:active { &:active {
opacity: 0.6; opacity: 0.6;
box-shadow: none; box-shadow: none;
@ -306,6 +307,10 @@ main {
header { header {
padding: 15px; padding: 15px;
position: sticky;
top: 0;
z-index: 99;
background: linear-gradient(180deg, white 80%, transparent);
> .search-input { > .search-input {
display: block; display: block;
margin-top: 15px; margin-top: 15px;
@ -316,12 +321,15 @@ main {
border-radius: $radius; border-radius: $radius;
box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.1); box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.1);
} }
//
> .github {
display: inline-flex;
align-items: center;
color: #000;
h1 { h1 {
display: inline-block; margin-left: 8px;
}
>.github{display: inline-flex;
>span{
margin-left: 5px;
} }
} }
} }
@ -336,7 +344,7 @@ main {
border-color: #eee; border-color: #eee;
border-width: 1px; border-width: 1px;
border-style: solid; border-style: solid;
box-shadow: 1px 2px 5px 1px rgba(0, 0, 0, 0.1);
> .border { > .border {
position: absolute; position: absolute;
background: $primary; background: $primary;
@ -350,6 +358,7 @@ main {
transition: all 600ms; transition: all 600ms;
border-radius: $radius; border-radius: $radius;
border-color: #eee; border-color: #eee;
box-shadow: none;
> .border { > .border {
animation: shrinkBorder 0.5s; animation: shrinkBorder 0.5s;
left: 0; left: 0;
@ -371,6 +380,7 @@ main {
color: #fff; color: #fff;
font-size: 12px; font-size: 12px;
cursor: pointer; cursor: pointer;
box-shadow: 1px 2px 3px $primary;
&.success { &.success {
&:after { &:after {
content: '复制成功'; content: '复制成功';
@ -385,20 +395,24 @@ main {
} }
&:active { &:active {
opacity: 0.6; opacity: 0.6;
color: #444; box-shadow: none;
} }
&:hover { &:hover {
opacity: 0.6; transition: all 0.3s;
color: rgba(255, 255, 255, 0.6)
} }
} }
> .btn-better { > .btn-better {
@extend .btn-copy; @extend .btn-copy;
background-color: $danger; background-color: $danger;
box-shadow: 1px 2px 3px $danger;
} }
>code{word-break:break-word;} > code {
word-break: break-word;
}
} }
> section.verification { > section.verification {
@ -413,6 +427,7 @@ main {
border: 1px solid #ddd; border: 1px solid #ddd;
font-size: 16px; font-size: 16px;
& + .btn-clear { & + .btn-clear {
cursor: pointer;
padding: 5px; padding: 5px;
color: #000; color: #000;
display: inline-block; display: inline-block;

View File

@ -15,9 +15,13 @@ module.exports = [{
counterExamples: ['192.168.1.1', 'https://www.jd.com'] counterExamples: ['192.168.1.1', 'https://www.jd.com']
}, },
{ {
title: '网址(支持端口和"?+参数"和"#+参数)', // 参考:
rule: /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/, // https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D#4_1
examples: ['www.qq.com', 'https://baidu.com', '360.com:8080/vue/#/a=1&b=2'], // https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D#7
// 也参考谷歌浏览器的地址栏, 如果输入非字母不会被识别为域名
title: '网址(URL)',
rule: /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/,
examples: ['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=BV10060895&city=420111&geoobj=113.207951%7C29.992557%7C115.785782%7C31.204369&query_type=IDQ&query=%E5%85%89%E8%B0%B7%E5%B9%BF%E5%9C%BA(%E5%9C%B0%E9%93%81%E7%AB%99)&zoom=10.15', '360.com:8080/vue/#/a=1&b=2'],
counterExamples: ['....'] counterExamples: ['....']
}, },
{ {
@ -25,7 +29,11 @@ module.exports = [{
rule: /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/, rule: /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,
examples: ['91230184MA1BUFLT44', '92371000MA3MXH0E3W'], examples: ['91230184MA1BUFLT44', '92371000MA3MXH0E3W'],
}, },
{
title: '统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)',
rule: /^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$/,
examples: ['91110108772551611J', '911101085923662400']
},
{ {
title: '迅雷链接', title: '迅雷链接',
rule: /^thunderx?:\/\/[a-zA-Z\d]+=$/, rule: /^thunderx?:\/\/[a-zA-Z\d]+=$/,
@ -44,19 +52,24 @@ module.exports = [{
examples: ['magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC'], examples: ['magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC'],
}, },
{ {
title: '子网掩码', title: '子网掩码(不包含 0.0.0.0)',
rule: /^(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/, rule: /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/,
examples: ['255.255.255.0', '255.224.0.0'] examples: ['255.255.255.0', '255.255.255.255', '255.240.0.0']
}, },
{ {
title: 'linux"文件"路径', title: 'linux"隐藏文件"路径',
rule: /^(\/[^/]+)+\/?$/, rule: /^\/(?:[^/]+\/)*\.[^/]*/,
examples: ['/usr/ad/dd', '/root/','/.gitignore'] examples: ['/usr/ad/.dd', '/root/.gitignore', '/.gitignore']
}, },
{ {
title: 'linux"文件"路径', title: 'linux文件夹路径',
rule: /^(\/[^/]+)+$/, rule: /^\/(?:[^/]+\/)*$/,
examples: ['/usr/ad/dd/a.js', '/root/b.ts'] examples: ['/usr/ad/dd/', '/', '/root/', '/ a a / a / a a /']
},
{
title: 'linux文件路径',
rule: /^\/(?:[^/]+\/)*[^/]+$/,
examples: ['/root/b.ts', '/root/abc']
}, },
{ {
title: 'window"文件夹"路径', title: 'window"文件夹"路径',
@ -75,33 +88,38 @@ module.exports = [{
}, },
{ {
title: '大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数', title: '大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数',
rule: /^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:.5)?$/, rule: /^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$/,
examples: [150, 100.5] examples: [150, 100.5]
}, },
{ {
title: 'html注释', title: 'html注释',
rule: /<!--[\s\S]*?-->/, rule: /<!--[\s\S]*?-->/g,
examples: ['<!--<div class="_bubble"></div>-->'] examples: ['<!--<div class="_bubble"></div>--><div>chenguzhen87</div><div class="_bubble"></div>-->']
}, },
{ {
title: 'md5格式(32位)', title: 'md5格式(32位)',
rule: /^([a-f\d]{32}|[A-F\d]{32})$/, rule: /^[a-fA-F0-9]{32}$/,
examples: ['21fe181c5bfc16306a6828c1f7b762e8'], examples: ['21fe181c5bfc16306a6828c1f7b762e8'],
}, },
{ {
title: '版本号格式必须为X.Y.Z', title: 'GUID/UUID',
rule: /^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$/i,
examples: ['e155518c-ca1b-443c-9be9-fe90fdab7345', '41E3DAF5-6E37-4BCC-9F8E-0D9521E2AA8D', '00000000-0000-0000-0000-000000000000'],
},
{
title: '版本号(version)格式必须为X.Y.Z',
rule: /^\d+(?:\.\d+){2}$/, rule: /^\d+(?:\.\d+){2}$/,
examples: ['16.3.10'] examples: ['16.3.10']
}, },
{ {
title: '视频链接地址(视频格式可按需增删)', title: '视频(video)链接地址(视频格式可按需增删)',
rule: /^https?:\/\/(.+\/)+.+(\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i, rule: /^https?:\/\/(.+\/)+.+(\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i,
examples: ['http://www.abc.com/video/wc.avi'] examples: ['http://www.abc.com/video/wc.avi']
}, },
{ {
title: '图片链接地址(图片格式可按需增删)', title: '图片(image)链接地址(图片格式可按需增删)',
rule: /^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i, rule: /^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i,
examples: ['https://www.abc.com/logo.png'] examples: ['https://www.abc.com/logo.png', 'http://www.abc.com/logo.png']
}, },
{ {
title: '24小时制时间HH:mm:ss', title: '24小时制时间HH:mm:ss',
@ -121,14 +139,9 @@ module.exports = [{
}, },
{ {
title: '数字/货币金额(支持负数、千分位分隔符)', title: '数字/货币金额(支持负数、千分位分隔符)',
rule: /^-?\d+(,\d{3})*(\.\d{1,2})?$/, rule: /^-?\d{1,3}(,\d{3})*(\.\d{1,2})?$/ ,
examples: [100, -0.99, 3, 234.32, -1, 900, 235.09, '12,345,678.90'] examples: [100, -0.99, 3, 234.32, -1, 900, 235.09, '12,345,678.90']
}, },
{
title: '数字/货币金额 (只支持正数、不支持校验千分位分隔符)',
rule: /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/,
examples: [0.99, 8.99, 666]
},
{ {
title: '银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)', title: '银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)',
rule: /^[1-9]\d{9,29}$/, rule: /^[1-9]\d{9,29}$/,
@ -141,68 +154,93 @@ module.exports = [{
}, },
{ {
title: '英文姓名', title: '英文姓名',
rule: /(^[a-zA-Z]{1}[a-zA-Z\s]{0,20}[a-zA-Z]{1}$)/, rule: /(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$)/,
examples: ['James', 'Kevin Wayne Durant', 'Dirk Nowitzki'] examples: ['James', 'Kevin Wayne Durant', 'Dirk Nowitzki']
}, },
{ {
title: '车牌号(新能源)', title: '车牌号(新能源)',
rule: /[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))$/, rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/,
examples: ['京AD92035', '甘G23459F'], examples: ['京AD92035', '甘G23459F', '京A19203D'],
}, },
{ {
title: '车牌号(非新能源)', title: '车牌号(非新能源)',
rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/, rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/,
examples: ['京A00599', '黑D23908'] examples: ['京A00599', '黑D23908']
}, },
{ {
title: '车牌号(新能源+非新能源)', title: '车牌号(新能源+非新能源)',
rule: /^(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(?:(?:[0-9]{5}[DF])|(?:[DF](?:[A-HJ-NP-Z0-9])[0-9]{4})))|(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})$/, rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/,
examples: ['京A12345D', '京A00599'] examples: ['京A12345D', '京A00599', '京AD92035', '甘G23459F', '京AA92035'],
counterExamples: ['宁AD1234555555', '浙苏H6F681']
}, },
{ {
title: '手机号中国(严谨), 根据工信部2019年最新公布的手机号段', title: '手机号(mobile phone)中国(严谨), 根据工信部最新公布的手机号段',
rule: /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/, rule: /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[01256789]))\d{8}$/,
examples: ['008618311006933', '+8617888829981', '19119255642'] examples: ['008618311006933', '+8617888829981', '19119255642', '19519255642']
}, },
{ {
title: '手机号中国(宽松), 只要是13,14,15,16,17,18,19开头即可', title: '手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可',
rule: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/, rule: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/,
examples: ['008618311006933', '+8617888829981', '19119255642'] examples: ['008618311006933', '+8617888829981', '19119255642']
}, },
{ {
title: '手机号中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条', title: '手机号(mobile phone)中国(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条',
rule: /^(?:(?:\+|00)86)?1\d{10}$/, rule: /^(?:(?:\+|00)86)?1\d{10}$/,
examples: ['008618311006933', '+8617888829981', '19119255642'] examples: ['008618311006933', '+8617888829981', '19119255642']
}, },
{ {
title: '日期', title: '日期(宽松)',
rule: /^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/, rule: /^\d{1,4}(-)(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31)$/,
examples: ['1990-12-12', '2020-1-1'] examples: ['1990-12-12', '1-1-1', '0000-1-1'],
counterExamples: ['2020-00-01']
},
{
title: '日期(严谨, 支持闰年判断)',
rule: /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/,
examples: ['1990-12-12', '2000-02-29'],
counterExamples: ['2021-02-29']
},
{
title: '中国省',
rule: /^浙江|上海|北京|天津|重庆|黑龙江|吉林|辽宁|内蒙古|河北|新疆|甘肃|青海|陕西|宁夏|河南|山东|山西|安徽|湖北|湖南|江苏|四川|贵州|云南|广西|西藏|江西|广东|福建|台湾|海南|香港|澳门$/,
examples: ['浙江', '台湾'],
counterExamples: ['哈尔滨']
},
{
title: '可以被moment转化成功的时间 YYYYMMDD HH:mm:ss',
rule: /^\d{4}([/:-\S])(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/,
examples: ['2020/01/01 23:59:59', '2020-01-01 00:00:00', '20200101 11:11:11'],
counterExamples: ['2020/00/01 23:59:59', '2020-01/01 23:59:59', '2020-01-01 23:59:61', '2020-01-0100:00:00',]
}, },
{ {
title: 'email(邮箱)', title: 'email(邮箱)',
rule: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, rule: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
examples: ['90203918@qq.com', 'nbilly@126.com'] examples: ['90203918@qq.com', 'nbilly@126.com', '汉字@qq.com']
}, },
{ {
title: '座机电话(国内),如: 0341-86091234', title: '座机(tel phone)电话(国内),如: 0341-86091234',
rule: /\d{3}-\d{8}|\d{4}-\d{7}/, rule: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
examples: ['0936-4211235'] examples: ['0936-4211235', '89076543', '010-12345678-1234']
}, },
{ {
title: '身份证号(1代,15位数字)', title: '身份证号(1代,15位数字)',
rule: /^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$/, rule: /^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2][\d]|30|31)\d{3}$/,
examples: ['622001790131123'] examples: ['123456991010193']
}, },
{ {
title: '身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X', title: '身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X',
rule: /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}[\dXx]$/, rule: /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/,
examples: ['62222319991205131x'] examples: ['12345619991205131x']
}, },
{ {
title: '身份证号, 支持1/2代(15位/18位数字)', title: '身份证号, 支持1/2代(15位/18位数字)',
rule: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/, rule: /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
examples: ['622223199912051311'] examples: ['622223199912051311', '12345619991205131x', '123456991010193']
}, },
{ {
title: '护照(包含香港、澳门)', title: '护照(包含香港、澳门)',
@ -221,13 +259,13 @@ module.exports = [{
examples: ['正则', '前端'] examples: ['正则', '前端']
}, },
{ {
title: '小数', title: '小数(支持科学计数)',
rule: /^\d+\.\d+$/, rule: /^[+-]?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)$/,
examples: ['0.0', '0.09'] examples: ['0.0', '0.09','4E+4']
}, },
{ {
title: '数字', title: '只包含数字',
rule: /^\d{1,}$/, rule: /^\d+$/,
examples: [12345678] examples: [12345678]
}, },
{ {
@ -235,6 +273,13 @@ module.exports = [{
rule: /<(\w+)[^>]*>(.*?<\/\1>)?/, rule: /<(\w+)[^>]*>(.*?<\/\1>)?/,
examples: ['<div id="app"> 2333 </div>', '<input type="text">', '<br>'] examples: ['<div id="app"> 2333 </div>', '<input type="text">', '<br>']
}, },
{
title: '匹配中文汉字和中文标点',
rule: /[\u4e00-\u9fa5|\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/,
examples: ["匹配中文汉字以及中文标点符号 。 “ ” ' 《 》 〈 〉 【 】 『 』 「 」 ﹃ ﹄ … — ¥"]
},
{ {
title: 'qq号格式正确', title: 'qq号格式正确',
rule: /^[1-9][0-9]{4,10}$/, rule: /^[1-9][0-9]{4,10}$/,
@ -262,31 +307,31 @@ module.exports = [{
}, },
{ {
title: '密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符', title: '密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符',
rule: /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/, rule: /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/,
examples: ['Kd@curry666'] examples: ['Kd@curry666']
}, },
{ {
title: '用户名校验4到16位字母数字下划线减号', title: '用户名校验4到16位字母数字下划线减号',
rule: /^[a-zA-Z0-9_-]{4,16}$/, rule: /^[\w-]{4,16}$/,
examples: ['xiaohua_qq'] examples: ['xiaohua_qq']
}, },
{ {
title: 'ip-v4', title: 'ip-v4[:端口]',
rule: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, rule: /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,
examples: ['172.16.0.0', '127.0.0.0'] examples: ['172.16.0.0', '172.16.0.0:8080', '127.0.0.0', '127.0.0.0:998']
}, },
{ {
title: 'ip-v6', title: 'ip-v6[:端口]',
rule: /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i, rule: /(^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$)|(^\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$)/i,
examples: ['2031:0000:130f:0000:0000:09c0:876a:130b'] examples: ['2031:0000:130f:0000:0000:09c0:876a:130b', '[2031:0000:130f:0000:0000:09c0:876a:130b]:8080']
}, },
{ {
title: '16进制颜色', title: '16进制颜色',
rule: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/, rule: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}|[a-fA-F0-9]{8}|[a-fA-F0-9]{4})$/,
examples: ['#f00', '#F90', '#000', '#fe9de8'] examples: ['#f00', '#F90', '#000', '#fe9de8', '#f8f8f8ff', '#f003']
}, },
{ {
title: '微信号6至20位以字母开头字母数字减号下划线', title: '微信号(wx)6至20位以字母开头字母数字减号下划线',
rule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/, rule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,
examples: ['github666', 'kd_-666'] examples: ['github666', 'kd_-666']
}, },
@ -307,7 +352,106 @@ module.exports = [{
}, },
{ {
title: 'java包名', title: 'java包名',
rule: /^([a-zA-Z_][a-zA-Z0-9_]*)+([.][a-zA-Z_][a-zA-Z0-9_]*)+$/, rule: /^([a-zA-Z_]\w*)+([.][a-zA-Z_]\w*)+$/,
examples: ['com.bbb.name'] examples: ['com.bbb.name']
} },
{
title: 'mac地址',
rule: /^(([a-f0-9][0,2,4,6,8,a,c,e]:([a-f0-9]{2}:){4})|([a-f0-9][0,2,4,6,8,a,c,e]-([a-f0-9]{2}-){4}))[a-f0-9]{2}$/i,
examples: ['38:f9:d3:4b:f5:51', '00-0C-29-CA-E4-66']
},
{
title: '匹配连续重复的字符',
rule: /(.)\1+/,
examples: ['我我我', '112233', '11234']
},
{
title: '数字和英文字母组成,并且同时含有数字和英文字母',
rule: /^(?=.*[a-zA-Z])(?=.*\d).+$/,
examples: ['我a我1我', 'a对1']
},
{
title: '香港身份证 ',
rule: /^[a-zA-Z]\d{6}\([\dA]\)$/,
examples: ['K034169(1)']
},
{
// 参考:
// https://baike.baidu.com/item/%E6%BE%B3%E9%97%A8%E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81/12509098?fr=aladdin#5
title: '澳门身份证 ',
rule: /^[1|5|7]\d{6}\(\d\)$/,
examples: ['5686611(1)']
},
{
title: '台湾身份证 ',
rule: /^[a-zA-Z][0-9]{9}$/,
examples: ['U193683453']
},
{
title: '大写字母,小写字母,数字,特殊符号 `@#$%^&*`~()-+=` 中任意3项密码',
rule: /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]/,
examples: ['a1@', 'A1@', 'Aa@']
},
{
title: 'ASCII码表中的全部的特殊字符',
rule: /[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+/,
examples: ["[", ".", "^", "&3%"]
},
{
title: '正整数不包含0',
rule: /^\+?[1-9]\d*$/,
examples: [1231]
},
{
title: '负整数不包含0',
rule: /^-[1-9]\d*$/,
examples: [-1231]
},
{
title: '整数',
rule: /^(?:0|(?:-?[1-9]\d*))$/,
examples: [-1231, 123, 0],
counterExamples: ['01']
},
{
title: '浮点数',
rule: /^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*|0\.0+)$/,
examples: ["1.23", "-1.01", "0.00"]
// allow "1.23", allow "-0.1", allow "0.00", ban "-0.00", ban "2.", allow "2.0"
},
{
title: '浮点数(严格)',
rule: /^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$/,
examples: ["1.23", "-1.01"]
// allow "1.23", allow "-0.1", ban "2.", ban "2.0"
},
{
title: 'email(支持中文邮箱)',
rule: /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,
examples: ['90203918@qq.com', 'nbilly@126.com', '啦啦啦@126.com']
},
{
title: '域名(非网址, 不包含协议)',
rule: /^([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})$/,
examples: ['www.baidu.com',
'baidu.com',
'baidu.com.cn',
'api.baidu.com',
'nodejs.org',
'nodejs.cn'],
counterExamples: ['http://baidu.com', 'https://baidu.com', 'www.百度.com']
},
{
title: '军官/士兵证',
rule: /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/,
examples: ['军字第2001988号', '士字第P011816X号'],
},
{
title: '户口薄',
rule: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
examples: ['441421999707223115'],
},
]; ];

View File

@ -3,6 +3,12 @@ import App from './App.vue'
Vue.config.productionTip = false Vue.config.productionTip = false
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('./sw.js');
});
}
new Vue({ new Vue({
render: h => h(App), render: h => h(App),
}).$mount('#app') }).$mount('#app')

View File

@ -1,5 +1,5 @@
module.exports = { module.exports = {
publicPath: process.env.NODE_ENV === 'production' // publicPath: process.env.NODE_ENV === 'production'
? '/any-rule/' // ? '/any-rule/'
: '/' // : '/'
} }

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
[]

View File

@ -9,6 +9,11 @@ pkg.contributes.commands = RULES.map((rule, index) => ({
title: `$(rocket) zz: ${rule.title}` title: `$(rocket) zz: ${rule.title}`
})); }));
pkg.contributes.commands.push({
command: 'extension.rule.callByMenu',
title: `🦕正则大全(${RULES.length}条)`
});
// console.log(JSON.stringify(pkg)); // console.log(JSON.stringify(pkg));
fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 4), 'utf8'); fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 4), 'utf8');
console.log(chalk.green('🚀 pkg文件修改完毕, 请等待生成vsc包...')); console.log(chalk.green('🚀 pkg文件修改完毕, 请等待生成vsc包...'));

View File

@ -24,40 +24,63 @@ const badges = [
let content = `# 正则大全 ${badges.join(' ')} let content = `# 正则大全 ${badges.join(' ')}
支持**web** / **vscode**2. 🦕支持**web** / **vscode** / **idea** / **Alfred Workflow**
## :rocket:web版本 ## :rocket:web版本
https://any86.github.io/any-rule/ https://any-rule.vercel.app/
## 🍭vscode插件 ## 🍭vscode插件
### 安装 ### 安装
vscode应用商店中搜索"**any-rule**". vscode应用商店中搜索"**any-rule**".
### 使用 ### 使用
**方式1:** **方式1:**
1. 安装完毕后按**F1**(或者ctrl+shift+p).
2. 输入"**zz**"弹出正则列表.
3. **输入关键词搜索**, 比如"手机".
![预览gif](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162) 1. **F1**(mac下fn+F1)打开正则列表.
2. **输入关键词搜索**, 比如"手机".
![GIF](https://user-images.githubusercontent.com/8264787/146724787-888a8666-5d2a-4e5e-b383-aec7c53bd312.gif)
**方式2:** **方式2:**
1. 在代码的任意位置输入"**zz.**"弹出正则列表. 右键选择"🦕正则大全".
2. **输入关键词搜索**, 比如"手机".
![预览gif](https://user-gold-cdn.xitu.io/2020/2/23/1706df78b18466fd?w=954&h=372&f=gif&s=1732199) ![GIF](https://user-images.githubusercontent.com/8264787/146725447-4d92caed-2dd0-4f11-91d1-8da9cd8ff08b.gif)
## 🦕图解正则 **方式3:**
在vscode中选择正则后, 可点击"🦕图解正则".
![](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563) 在代码任意位置输入"**@zz**".
![GIF](https://user-images.githubusercontent.com/8264787/146725402-30b34119-b709-4d49-adb2-af8dbb786d3b.gif)
## 👩🏫图解正则
<details>
<summary>查看详情</summary>
每次在any-rule中选择正则后会弹出提示, 可点击"🤖图解正则".
![image](https://user-images.githubusercontent.com/8264787/146726200-d97e48c3-df76-4531-8210-b6935fffb997.png)
点击后可以看到正则解析, 方便大家学习. 点击后可以看到正则解析, 方便大家学习.
![](https://user-gold-cdn.xitu.io/2020/2/23/1706e349b600c28b?w=1151&h=500&f=png&s=45210) ![image](https://user-images.githubusercontent.com/8264787/146726350-58166bf9-7f7f-4685-86aa-f055d0c0b914.png)
**注意**: 图解直接使用了https://regexper.com, 在此对作者表示敬意和感谢. **注意**: 图解直接使用了https://regexper.com, 在此对作者表示敬意和感谢.
</details>
## 社区版本
社区版本非本人维护, 只是其他开发者使用了any-rule整理的正则内容, 如使用出现问题可直接与其开发者联系.
[idea版](https://github.com/zhoriya/idea-rule)
[Alfred Workflow版](https://github.com/cccyb/workflows)
[hyjs: 函数封装版](https://github.com/heiyehk/hyjs/tree/main/packages/utils)
[命令行版本](https://github.com/shenguanjiejie/workwork)
[uTools版本](https://github.com/trentlee0/utools-any-rule)
## :fire:关于PR ## :fire:关于PR
欢迎大家PR, 步骤如下: 欢迎大家PR, 步骤如下:
@ -68,25 +91,6 @@ vscode应用商店中搜索"**any-rule**".
在此感谢大家对**any-rule**做出的贡献! 在此感谢大家对**any-rule**做出的贡献!
## 👽主要开发者
按照加入时间排序
<table>
<tr>
<td>
<a href="https://github.com/MrTenger"><img width="60" src="https://avatars3.githubusercontent.com/u/10781715?s=60&v=4"></a>
</td>
<td>
<a href="https://github.com/giraffeComing"><img width="60" src="https://avatars2.githubusercontent.com/u/14800669?s=460&v=4"></a>
</td>
<td>
<a href="https://github.com/microud"><img width="60" src="https://avatars1.githubusercontent.com/u/10163257?s=60&v=4"></a>
</td>
<td>
<a href="https://github.com/52cik"><img width="60" src="https://avatars0.githubusercontent.com/u/5033310?s=60&v=4"></a>
</td>
</tr>
</table>
## 🍔正则 ## 🍔正则
`; `;

View File

@ -6,10 +6,12 @@ import {
const RULES: { title: string, rule: RegExp, examples: string[] }[] = require('../packages/www/src/RULES.js'); const RULES: { title: string, rule: RegExp, examples: string[] }[] = require('../packages/www/src/RULES.js');
import useCommand from './useCommand'; import useCommand from './useCommand';
import useQuickPick from './useQuickPick'; import useQuickPick from './useQuickPick';
import useMenuCommand from './useMenuCommand';
export function activate(context: ExtensionContext) { export function activate(context: ExtensionContext) {
useCommand(context, RULES); useCommand(context, RULES);
useQuickPick(context, RULES); useQuickPick(context, RULES);
useMenuCommand(context, RULES);
} }
export function deactivate() { } export function deactivate() { }

View File

@ -2,8 +2,8 @@ import { extensions, window, version, env, Uri, languages } from 'vscode';
import { getCodeLanguage, getExtensionVersion } from './shared' import { getCodeLanguage, getExtensionVersion } from './shared'
import insertLog from './insertLog'; import insertLog from './insertLog';
const BUTTON_FEEDBACK = '🚀反馈问题'; const BUTTON_FEEDBACK = '✋意见反馈';
const BUTTON_DIAGRAMMATIZE = '🦕图解正则'; const BUTTON_DIAGRAMMATIZE = '👩‍🏫图解正则';
const BUTTON_CANCEL = '关闭'; const BUTTON_CANCEL = '关闭';
export default function (title: string, rule: string): void { export default function (title: string, rule: string): void {

55
src/useMenuCommand.ts Normal file
View File

@ -0,0 +1,55 @@
import { window, commands, Range, ExtensionContext } from "vscode";
import { Rule } from './interface';
import insertLog from './insertLog';
import showResultMessage from './showResultMessage';
export default function (context: ExtensionContext, RULES: Rule[]) {
const disposable = commands.registerCommand(`extension.rule.callByMenu`, () => {
// showQuickPick
window.showQuickPick(RULES.map(({ examples, title, rule }) => {
// const match = title.match(/\((.+)\)/);
return {
label: title,
// description: null !== match ? match[1] : '',
rule: String(rule), // 非标准字段, 仅仅为了传值
detail: `例如: ${examples.join(' 或 ')}`
};
}), {
placeHolder: '请输入关键词',
// onDidSelectItem(item){
// console.log(item)
// }
}).then(item => {
if (!item) return
const editor = window.activeTextEditor;
if (editor) {
const ruleString = String(item.rule);
const title = item.label;
const { selections } = editor;
editor.edit(editBuilder => {
selections.forEach(selection => {
const { start, end } = selection;
const range = new Range(start, end);
editBuilder.replace(range, ruleString);
});
});
// 日志
insertLog({
rule: ruleString,
title,
method: 'Menu'
});
showResultMessage(title, ruleString);
}
});
});
context.subscriptions.push(disposable);
}

View File

@ -7,7 +7,13 @@ import showResultMessage from './showResultMessage';
export default function (context: ExtensionContext, RULES: Rule[]) { export default function (context: ExtensionContext, RULES: Rule[]) {
// commands.registerCommand('functions.insertRegex', insertRule); // commands.registerCommand('functions.insertRegex', insertRule);
// 不确定是不是都兼容"*", 保守 // 不确定是不是都兼容"*", 保守
const { supportedLanguages, triggerStringEnd } = getConfig(); let { supportedLanguages, triggerStringEnd } = getConfig();
workspace.onDidChangeConfiguration(() => {
const config = getConfig();
supportedLanguages = config.supportedLanguages;
triggerStringEnd = config.triggerStringEnd;
});
const disposable = languages.registerCompletionItemProvider(supportedLanguages.split(','), { const disposable = languages.registerCompletionItemProvider(supportedLanguages.split(','), {
provideCompletionItems(document, position) { provideCompletionItems(document, position) {
const { triggerString } = getConfig(); const { triggerString } = getConfig();
@ -81,12 +87,16 @@ function insertRule(document: TextDocument, position: Position, ruleString: stri
// 获取配置 // 获取配置
function getConfig() { function getConfig() {
const configuration = workspace.getConfiguration(); const configuration = workspace.getConfiguration();
const { triggerString, supportedLanguages = '*' } = configuration.AnyRule; const { triggerString, supportedLanguages } = configuration['any-rule'];
const { length } = triggerString; const { length } = triggerString;
const triggerStringStart = triggerString.substr(0, length - 1); const triggerStringStart = triggerString.substr(0, length - 1);
const triggerStringEnd = triggerString.substr(-1); const triggerStringEnd = triggerString.substr(-1);
console.log(supportedLanguages);
return { return {
triggerStringStart, triggerStringEnd, triggerString, supportedLanguages triggerStringStart,
triggerStringEnd,
triggerString,
// 预留
supportedLanguages
} }
} }

42
webpack.config.js Normal file
View File

@ -0,0 +1,42 @@
// @ts-check
'use strict';
const path = require('path');
/**@type {import('webpack').Configuration}*/
const config = {
target: 'node', // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/
entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
output: {
// the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
path: path.resolve(__dirname, 'out'),
filename: 'extension.js',
libraryTarget: 'commonjs2',
devtoolModuleFilenameTemplate: '../[resource-path]'
},
devtool: 'source-map',
externals: {
vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
},
resolve: {
// support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader
extensions: ['.ts', '.js']
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
use: [
{
loader: 'ts-loader'
}
]
}
]
}
};
module.exports = config;

BIN
wip.zip

Binary file not shown.

3245
yarn.lock

File diff suppressed because it is too large Load Diff