Compare commits

..

120 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
16 changed files with 855 additions and 27728 deletions

View File

@ -5,6 +5,7 @@
version: 2
jobs:
build:
filters:
branches:
ignore:
- gh-pages
@ -29,7 +30,7 @@ jobs:
# - run: yarn install
# - 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

7
.gitignore vendored
View File

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

View File

@ -1,6 +1,34 @@
# 更新日志
🚀 [提交问题](https://github.com/any86/any-rule/issues/new)
### 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)
- 优化一些冗余的正则拼写
- 修复新能源汽车不匹配第三位为字母的情况.

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.

179
README.md
View File

@ -1,9 +1,9 @@
# 正则大全 ![已收录70条](https://img.shields.io/badge/已收录-70条-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** / **idea** / **Alfred Workflow**多平台
## :rocket:web版本
https://any86.github.io/any-rule/
https://any-rule.vercel.app/
## 🍭vscode插件
@ -16,40 +16,48 @@ vscode应用商店中搜索"**any-rule**".
1. 按**F1**(mac下fn+F1)打开正则列表.
2. **输入关键词搜索**, 比如"手机".
![预览图](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162)
![GIF](https://user-images.githubusercontent.com/8264787/146724787-888a8666-5d2a-4e5e-b383-aec7c53bd312.gif)
**方式2:**
右键选择"🦕正则大全".
![](https://user-gold-cdn.xitu.io/2020/2/28/17087735718cca3b?w=389&h=400&f=png&s=55934)
![GIF](https://user-images.githubusercontent.com/8264787/146725447-4d92caed-2dd0-4f11-91d1-8da9cd8ff08b.gif)
**方式3:**
在代码任意位置输入"**@zz**".
![预览图](https://user-gold-cdn.xitu.io/2020/2/28/17089999afc7a21c?w=722&h=408&f=gif&s=299355)
![GIF](https://user-images.githubusercontent.com/8264787/146725402-30b34119-b709-4d49-adb2-af8dbb786d3b.gif)
## 👩‍🏫图解正则
<details>
<summary>查看详情</summary>
每次在any-rule中选择正则后会弹出提示, 可点击"🤖图解正则".
![预览图](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563)
![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, 在此对作者表示敬意和感谢.
</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
欢迎大家PR, 步骤如下:
1. **正则**请在**packages/www/src/RULES.js**中添加.
@ -59,25 +67,6 @@ vscode应用商店中搜索"**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>
## 🍔正则
### 火车车次
@ -95,9 +84,9 @@ vscode应用商店中搜索"**any-rule**".
/^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/
```
### 网址(url,支持端口和"?+参数"和"#+参数)
### 网址(URL)
```javascript
/^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/
/^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/
```
### 统一社会信用代码
@ -125,9 +114,9 @@ vscode应用商店中搜索"**any-rule**".
/^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/
```
### 子网掩码
### 子网掩码(不包含 0.0.0.0)
```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"隐藏文件"路径
@ -167,12 +156,17 @@ vscode应用商店中搜索"**any-rule**".
### html注释
```javascript
/^<!--[\s\S]*?-->$/
/<!--[\s\S]*?-->/g
```
### md5格式(32位)
```javascript
/^([a-f\d]{32}|[A-F\d]{32})$/
/^[a-fA-F0-9]{32}$/
```
### GUID/UUID
```javascript
/^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$/i
```
### 版本号(version)格式必须为X.Y.Z
@ -207,12 +201,7 @@ vscode应用商店中搜索"**any-rule**".
### 数字/货币金额(支持负数、千分位分隔符)
```javascript
/^-?\d+(,\d{3})*(\.\d{1,2})?$/
```
### 数字/货币金额 (只支持正数、不支持校验千分位分隔符)
```javascript
/(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0)$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/
/^-?\d{1,3}(,\d{3})*(\.\d{1,2})?$/
```
### 银行卡号10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)
@ -232,7 +221,7 @@ vscode应用商店中搜索"**any-rule**".
### 车牌号(新能源)
```javascript
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((\d{5}[A-HJK])|([A-HJK][A-HJ-NP-Z0-9][0-9]{4}))|[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳])$/
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/
```
### 车牌号(非新能源)
@ -247,7 +236,7 @@ vscode应用商店中搜索"**any-rule**".
### 手机号(mobile phone)中国(严谨), 根据工信部2019年最新公布的手机号段
```javascript
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\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}$/
```
### 手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可
@ -260,9 +249,24 @@ vscode应用商店中搜索"**any-rule**".
/^(?:(?:\+|00)86)?1\d{10}$/
```
### date(日期)
### 日期(宽松)
```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(邮箱)
@ -272,12 +276,7 @@ vscode应用商店中搜索"**any-rule**".
### 座机(tel phone)电话(国内),如: 0341-86091234
```javascript
/^\d{3}-\d{8}$|^\d{4}-\d{7,8}$/
```
### 座机(tel phone)电话(国内), 区号可选,如: 0341-86091234
```javascript
/^(?:\d{3}-)?\d{8}$|^(?:\d{4}-)?\d{7,8}$/
/^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/
```
### 身份证号(1代,15位数字)
@ -292,7 +291,7 @@ vscode应用商店中搜索"**any-rule**".
### 身份证号, 支持1/2代(15位/18位数字)
```javascript
/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|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)$/
```
### 护照(包含香港、澳门)
@ -310,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])+$/
```
### 小数
### 小数(支持科学计数)
```javascript
/^\d+\.\d+$/
/^[+-]?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)$/
```
### 数字
### 只包含数字
```javascript
/^\d{1,}$/
/^\d+$/
```
### html标签(宽松匹配)
@ -325,6 +324,11 @@ vscode应用商店中搜索"**any-rule**".
/<(\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号格式正确
```javascript
/^[1-9][0-9]{4,10}$/
@ -357,22 +361,22 @@ vscode应用商店中搜索"**any-rule**".
### 用户名校验4到16位字母数字下划线减号
```javascript
/^[a-zA-Z0-9_-]{4,16}$/
/^[\w-]{4,16}$/
```
### ip-v4[:端口]
```javascript
/^((\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]))?$/
/^((\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[:端口]
```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}:))|\[(?:(?:(?:[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
/(^(?:(?:(?:[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进制颜色
```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})$/
```
### 微信号(wx)6至20位以字母开头字母数字减号下划线
@ -402,7 +406,7 @@ vscode应用商店中搜索"**any-rule**".
### mac地址
```javascript
/^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i
/^(([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
```
### 匹配连续重复的字符
@ -422,10 +426,65 @@ vscode应用商店中搜索"**any-rule**".
### 澳门身份证
```javascript
/^[1|5|7]\d{6}[(\d)]{3}$/
/^[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)$)/
```

6311
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,13 @@
"publisher": "russell",
"displayName": "any-rule",
"description": "你要的\"正则\"都在这!",
"version": "0.3.8",
"version": "0.3.18",
"keywords": [
"vscode",
"typescript",
"regxp",
"正则"
],
"husky": {
"hooks": {
"pre-push": "npm run test:rules"
@ -25,6 +31,7 @@
"vscode": "^1.12.0"
},
"categories": [
"Snippets",
"Other"
],
"icon": "images/vscode-logo.png",
@ -48,6 +55,11 @@
"type": "string",
"default": "@zz",
"description": "触发字符串"
},
"any-rule.supportedLanguages": {
"type": "string",
"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": "支持的开发语言(用','分割)"
}
}
},
@ -75,7 +87,7 @@
},
{
"command": "extension.rule3",
"title": "$(rocket) zz: 网址(url,支持端口和\"?+参数\"和\"#+参数)"
"title": "$(rocket) zz: 网址(URL)"
},
{
"command": "extension.rule4",
@ -99,7 +111,7 @@
},
{
"command": "extension.rule9",
"title": "$(rocket) zz: 子网掩码"
"title": "$(rocket) zz: 子网掩码(不包含 0.0.0.0)"
},
{
"command": "extension.rule10",
@ -139,35 +151,35 @@
},
{
"command": "extension.rule19",
"title": "$(rocket) zz: 版本号(version)格式必须为X.Y.Z"
"title": "$(rocket) zz: GUID/UUID"
},
{
"command": "extension.rule20",
"title": "$(rocket) zz: 视频(video)链接地址(视频格式可按需增删)"
"title": "$(rocket) zz: 版本号(version)格式必须为X.Y.Z"
},
{
"command": "extension.rule21",
"title": "$(rocket) zz: 图片(image)链接地址(图片格式可按需增删)"
"title": "$(rocket) zz: 视频(video)链接地址(视频格式可按需增删)"
},
{
"command": "extension.rule22",
"title": "$(rocket) zz: 24小时制时间HH:mm:ss"
"title": "$(rocket) zz: 图片(image)链接地址(图片格式可按需增删"
},
{
"command": "extension.rule23",
"title": "$(rocket) zz: 12小时制时间hh:mm:ss"
"title": "$(rocket) zz: 24小时制时间HH:mm:ss"
},
{
"command": "extension.rule24",
"title": "$(rocket) zz: base64格式"
"title": "$(rocket) zz: 12小时制时间hh:mm:ss"
},
{
"command": "extension.rule25",
"title": "$(rocket) zz: 数字/货币金额(支持负数、千分位分隔符)"
"title": "$(rocket) zz: base64格式"
},
{
"command": "extension.rule26",
"title": "$(rocket) zz: 数字/货币金额 (只支持正数、不支持校验千分位分隔符)"
"title": "$(rocket) zz: 数字/货币金额(支持负数、千分位分隔符)"
},
{
"command": "extension.rule27",
@ -207,143 +219,199 @@
},
{
"command": "extension.rule36",
"title": "$(rocket) zz: date(日期)"
"title": "$(rocket) zz: 日期(宽松)"
},
{
"command": "extension.rule37",
"title": "$(rocket) zz: email(邮箱)"
"title": "$(rocket) zz: 日期(严谨, 支持闰年判断)"
},
{
"command": "extension.rule38",
"title": "$(rocket) zz: 座机(tel phone)电话(国内),如: 0341-86091234"
"title": "$(rocket) zz: 中国省"
},
{
"command": "extension.rule39",
"title": "$(rocket) zz: 座机(tel phone)电话(国内), 区号可选,如: 0341-86091234"
"title": "$(rocket) zz: 可以被moment转化成功的时间 YYYYMMDD HH:mm:ss"
},
{
"command": "extension.rule40",
"title": "$(rocket) zz: 身份证号(1代,15位数字)"
"title": "$(rocket) zz: email(邮箱)"
},
{
"command": "extension.rule41",
"title": "$(rocket) zz: 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X"
"title": "$(rocket) zz: 座机(tel phone)电话(国内),如: 0341-86091234"
},
{
"command": "extension.rule42",
"title": "$(rocket) zz: 身份证号, 支持1/2代(15位/18位数字)"
"title": "$(rocket) zz: 身份证号(1代,15位数字)"
},
{
"command": "extension.rule43",
"title": "$(rocket) zz: 护照(包含香港、澳门)"
"title": "$(rocket) zz: 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X"
},
{
"command": "extension.rule44",
"title": "$(rocket) zz: 帐号是否合法(字母开头允许5-16字节允许字母数字下划线组合"
"title": "$(rocket) zz: 身份证号, 支持1/2代(15位/18位数字)"
},
{
"command": "extension.rule45",
"title": "$(rocket) zz: 中文/汉字"
"title": "$(rocket) zz: 护照(包含香港、澳门)"
},
{
"command": "extension.rule46",
"title": "$(rocket) zz: 小数"
"title": "$(rocket) zz: 帐号是否合法(字母开头允许5-16字节允许字母数字下划线组合"
},
{
"command": "extension.rule47",
"title": "$(rocket) zz: 字"
"title": "$(rocket) zz: 中文/汉字"
},
{
"command": "extension.rule48",
"title": "$(rocket) zz: html标签(宽松匹配)"
"title": "$(rocket) zz: 小数(支持科学计数)"
},
{
"command": "extension.rule49",
"title": "$(rocket) zz: qq号格式正确"
"title": "$(rocket) zz: 只包含数字"
},
{
"command": "extension.rule50",
"title": "$(rocket) zz: 数字和字母组成"
"title": "$(rocket) zz: html标签(宽松匹配)"
},
{
"command": "extension.rule51",
"title": "$(rocket) zz: 英文字母"
"title": "$(rocket) zz: 匹配中文汉字和中文标点"
},
{
"command": "extension.rule52",
"title": "$(rocket) zz: 小写英文字母组成"
"title": "$(rocket) zz: qq号格式正确"
},
{
"command": "extension.rule53",
"title": "$(rocket) zz: 大写英文字母"
"title": "$(rocket) zz: 数字和字母组成"
},
{
"command": "extension.rule54",
"title": "$(rocket) zz: 密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符"
"title": "$(rocket) zz: 英文字母"
},
{
"command": "extension.rule55",
"title": "$(rocket) zz: 用户名校验4到16位字母数字下划线减号"
"title": "$(rocket) zz: 小写英文字母组成"
},
{
"command": "extension.rule56",
"title": "$(rocket) zz: ip-v4[:端口]"
"title": "$(rocket) zz: 大写英文字母"
},
{
"command": "extension.rule57",
"title": "$(rocket) zz: ip-v6[:端口]"
"title": "$(rocket) zz: 密码强度校验最少6位包括至少1个大写字母1个小写字母1个数字1个特殊字符"
},
{
"command": "extension.rule58",
"title": "$(rocket) zz: 16进制颜色"
"title": "$(rocket) zz: 用户名校验4到16位字母数字下划线减号"
},
{
"command": "extension.rule59",
"title": "$(rocket) zz: 微信号(wx)6至20位以字母开头字母数字减号下划线"
"title": "$(rocket) zz: ip-v4[:端口]"
},
{
"command": "extension.rule60",
"title": "$(rocket) zz: 邮政编码(中国)"
"title": "$(rocket) zz: ip-v6[:端口]"
},
{
"command": "extension.rule61",
"title": "$(rocket) zz: 中文和数字"
"title": "$(rocket) zz: 16进制颜色"
},
{
"command": "extension.rule62",
"title": "$(rocket) zz: 不能包含字母"
"title": "$(rocket) zz: 微信号(wx)6至20位以字母开头字母数字减号下划线"
},
{
"command": "extension.rule63",
"title": "$(rocket) zz: java包名"
"title": "$(rocket) zz: 邮政编码(中国)"
},
{
"command": "extension.rule64",
"title": "$(rocket) zz: mac地址"
"title": "$(rocket) zz: 中文和数字"
},
{
"command": "extension.rule65",
"title": "$(rocket) zz: 匹配连续重复的字符"
"title": "$(rocket) zz: 不能包含字母"
},
{
"command": "extension.rule66",
"title": "$(rocket) zz: 数字和英文字母组成,并且同时含有数字和英文字母"
"title": "$(rocket) zz: java包名"
},
{
"command": "extension.rule67",
"title": "$(rocket) zz: 香港身份证 "
"title": "$(rocket) zz: mac地址"
},
{
"command": "extension.rule68",
"title": "$(rocket) zz: 澳门身份证 "
"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": "🦕正则大全(70条)"
"title": "🦕正则大全(84条)"
}
]
},

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -1,47 +1,52 @@
<template>
<main>
<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
onclick="_hmt.push(['_trackEvent', '交互', '提问'])"
class="message"
href="https://github.com/any86/any-rule/issues/new"
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>
<header>
<h1>正则大全</h1>
<a
onclick="_hmt.push(['_trackEvent', '交互', '点击github', '头部'])"
style="margin-left:15px;color:#000;"
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">
<!-- <svg height="32" viewBox="0 0 16 16" version="1.1" width="32" 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>
</svg> -->
<h1>🦕正则大全</h1>
</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
ref="searchInput"
@ -53,7 +58,7 @@
class="search-input"
placeholder="搜索关键词, 如'手机'"
type="text"
>
/>
</header>
<article>
@ -72,7 +77,8 @@
:href="`https://github.com/any86/any-rule/issues/new?title=我有更好的正则: ${title}`"
target="_blank"
class="btn-better"
>我有更好的正则</a>
>我有更好的正则</a
>
<code ref="code" class="javascript">{{ rule }}</code>
</p>
<section class="verification">
@ -87,7 +93,7 @@
@compositionend="check(index, 'blur')"
@blur="check(index, 'blur')"
@keyup="check(index, 'keyup')"
>
/>
<span class="btn-clear" @click="reset(index)">清空</span>
</label>
@ -101,13 +107,9 @@
<section class="trigger">
<h3>验证时机</h3>
<label>
<input v-model="list[index].events.blur" type="checkbox"> blur
</label>
<label> <input v-model="list[index].events.blur" type="checkbox" /> blur </label>
<label>
<input v-model="list[index].events.keyup" type="checkbox"> keyup
</label>
<label> <input v-model="list[index].events.keyup" type="checkbox" /> keyup </label>
</section>
</li>
</ul>
@ -137,9 +139,9 @@ export default {
isOk: undefined,
events: {
blur: true,
keyup: true
}
}))
keyup: true,
},
})),
};
},
@ -183,7 +185,7 @@ export default {
search() {
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 {
this.rules = RULES;
}
@ -225,8 +227,8 @@ export default {
/* eslint-disable */
_hmt.push(['_trackEvent', 'input框', this.rules[index].title, this.list[index].value]);
}
}
}
},
},
};
</script>
@ -271,18 +273,17 @@ main {
z-index: 1986;
right: 15px;
bottom: 15px;
box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.1);
border-radius: $radius;
overflow: hidden;
> a {
display: flex;
border-radius: $radius;
align-content: center;
align-items: center;
justify-content: center;
justify-items: center;
font-size: 16px;
text-align: center;
padding: 15px;
padding: 16px;
box-shadow: 1px 2px 3px 1px rgba(0, 0, 0, 0.1);
&:active {
opacity: 0.6;
box-shadow: none;
@ -306,6 +307,10 @@ main {
header {
padding: 15px;
position: sticky;
top: 0;
z-index: 99;
background: linear-gradient(180deg, white 80%, transparent);
> .search-input {
display: block;
margin-top: 15px;
@ -316,12 +321,15 @@ main {
border-radius: $radius;
box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.1);
}
//
> .github {
display: inline-flex;
align-items: center;
color: #000;
h1 {
display: inline-block;
}
>.github{display: inline-flex;
>span{
margin-left: 5px;
margin-left: 8px;
}
}
}
@ -336,7 +344,7 @@ main {
border-color: #eee;
border-width: 1px;
border-style: solid;
box-shadow: 1px 2px 5px 1px rgba(0, 0, 0, 0.1);
> .border {
position: absolute;
background: $primary;
@ -350,6 +358,7 @@ main {
transition: all 600ms;
border-radius: $radius;
border-color: #eee;
box-shadow: none;
> .border {
animation: shrinkBorder 0.5s;
left: 0;
@ -371,6 +380,7 @@ main {
color: #fff;
font-size: 12px;
cursor: pointer;
box-shadow: 1px 2px 3px $primary;
&.success {
&:after {
content: '复制成功';
@ -385,20 +395,24 @@ main {
}
&:active {
opacity: 0.6;
color: #444;
box-shadow: none;
}
&:hover {
opacity: 0.6;
transition: all 0.3s;
color: rgba(255, 255, 255, 0.6)
}
}
> .btn-better {
@extend .btn-copy;
background-color: $danger;
box-shadow: 1px 2px 3px $danger;
}
>code{word-break:break-word;}
> code {
word-break: break-word;
}
}
> section.verification {
@ -413,6 +427,7 @@ main {
border: 1px solid #ddd;
font-size: 16px;
& + .btn-clear {
cursor: pointer;
padding: 5px;
color: #000;
display: inline-block;

View File

@ -15,9 +15,13 @@ module.exports = [{
counterExamples: ['192.168.1.1', 'https://www.jd.com']
},
{
title: '网址(url,支持端口和"?+参数"和"#+参数)',
rule: /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/,
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#4_1
// 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: ['....']
},
{
@ -48,9 +52,9 @@ module.exports = [{
examples: ['magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC'],
},
{
title: '子网掩码',
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}$/,
examples: ['255.255.255.0', '255.224.0.0']
title: '子网掩码(不包含 0.0.0.0)',
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.255.255.255', '255.240.0.0']
},
{
title: 'linux"隐藏文件"路径',
@ -60,7 +64,7 @@ module.exports = [{
{
title: 'linux文件夹路径',
rule: /^\/(?:[^/]+\/)*$/,
examples: ['/usr/ad/dd/', '/', '/root/']
examples: ['/usr/ad/dd/', '/', '/root/', '/ a a / a / a a /']
},
{
title: 'linux文件路径',
@ -89,14 +93,19 @@ module.exports = [{
},
{
title: 'html注释',
rule: /^<!--[\s\S]*?-->$/,
examples: ['<!--<div class="_bubble"></div>-->']
rule: /<!--[\s\S]*?-->/g,
examples: ['<!--<div class="_bubble"></div>--><div>chenguzhen87</div><div class="_bubble"></div>-->']
},
{
title: 'md5格式(32位)',
rule: /^([a-f\d]{32}|[A-F\d]{32})$/,
rule: /^[a-fA-F0-9]{32}$/,
examples: ['21fe181c5bfc16306a6828c1f7b762e8'],
},
{
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}$/,
@ -110,7 +119,7 @@ module.exports = [{
{
title: '图片(image)链接地址(图片格式可按需增删)',
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',
@ -130,14 +139,9 @@ module.exports = [{
},
{
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']
},
{
title: '数字/货币金额 (只支持正数、不支持校验千分位分隔符)',
rule: /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0)$)|(?:^[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)',
rule: /^[1-9]\d{9,29}$/,
@ -155,8 +159,8 @@ module.exports = [{
},
{
title: '车牌号(新能源)',
rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((\d{5}[A-HJK])|([A-HJK][A-HJ-NP-Z0-9][0-9]{4}))|[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳])$/,
examples: ['京AD92035', '甘G23459F', '京AA92035'],
rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/,
examples: ['京AD92035', '甘G23459F', '京A19203D'],
},
{
title: '车牌号(非新能源)',
@ -170,9 +174,9 @@ module.exports = [{
counterExamples: ['宁AD1234555555', '浙苏H6F681']
},
{
title: '手机号(mobile phone)中国(严谨), 根据工信部2019年最新公布的手机号段',
rule: /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
examples: ['008618311006933', '+8617888829981', '19119255642']
title: '手机号(mobile phone)中国(严谨), 根据工信部最新公布的手机号段',
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', '19519255642']
},
{
title: '手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可',
@ -185,14 +189,36 @@ module.exports = [{
examples: ['008618311006933', '+8617888829981', '19119255642']
},
{
title: 'date(日期)',
rule: /^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/,
examples: ['1990-12-12', '2020-1-1']
title: '日期(宽松)',
rule: /^\d{1,4}(-)(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31)$/,
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(邮箱)',
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']
},
{
@ -213,8 +239,8 @@ module.exports = [{
},
{
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[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
examples: ['622223199912051311']
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', '12345619991205131x', '123456991010193']
},
{
title: '护照(包含香港、澳门)',
@ -233,13 +259,13 @@ module.exports = [{
examples: ['正则', '前端']
},
{
title: '小数',
rule: /^\d+\.\d+$/,
examples: ['0.0', '0.09']
title: '小数(支持科学计数)',
rule: /^[+-]?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)$/,
examples: ['0.0', '0.09','4E+4']
},
{
title: '数字',
rule: /^\d{1,}$/,
title: '只包含数字',
rule: /^\d+$/,
examples: [12345678]
},
{
@ -247,6 +273,13 @@ module.exports = [{
rule: /<(\w+)[^>]*>(.*?<\/\1>)?/,
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号格式正确',
rule: /^[1-9][0-9]{4,10}$/,
@ -279,23 +312,23 @@ module.exports = [{
},
{
title: '用户名校验4到16位字母数字下划线减号',
rule: /^[a-zA-Z0-9_-]{4,16}$/,
rule: /^[\w-]{4,16}$/,
examples: ['xiaohua_qq']
},
{
title: 'ip-v4[:端口]',
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]))?$/,
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', '172.16.0.0:8080', '127.0.0.0', '127.0.0.0:998']
},
{
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}:))|\[(?:(?:(?:[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,
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', '[2031:0000:130f:0000:0000:09c0:876a:130b]:8080']
},
{
title: '16进制颜色',
rule: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,
examples: ['#f00', '#F90', '#000', '#fe9de8']
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', '#f8f8f8ff', '#f003']
},
{
title: '微信号(wx)6至20位以字母开头字母数字减号下划线',
@ -324,7 +357,7 @@ module.exports = [{
},
{
title: 'mac地址',
rule: /^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i,
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']
},
{
@ -343,8 +376,10 @@ module.exports = [{
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)]{3}$/,
rule: /^[1|5|7]\d{6}\(\d\)$/,
examples: ['5686611(1)']
},
{
@ -352,4 +387,71 @@ module.exports = [{
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

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

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,7 @@ let content = `# 正则大全 ${badges.join(' ')}
🦕支持**web** / **vscode** / **idea** / **Alfred Workflow**
## :rocket:web版本
https://any86.github.io/any-rule/
https://any-rule.vercel.app/
## 🍭vscode插件
@ -40,40 +40,48 @@ vscode应用商店中搜索"**any-rule**".
1. **F1**(mac下fn+F1)打开正则列表.
2. **输入关键词搜索**, 比如"手机".
![预览图](https://user-gold-cdn.xitu.io/2020/1/10/16f8e01a684a0a18?w=420&h=243&f=gif&s=414162)
![GIF](https://user-images.githubusercontent.com/8264787/146724787-888a8666-5d2a-4e5e-b383-aec7c53bd312.gif)
**方式2:**
右键选择"🦕正则大全".
![](https://user-gold-cdn.xitu.io/2020/2/28/17087735718cca3b?w=389&h=400&f=png&s=55934)
![GIF](https://user-images.githubusercontent.com/8264787/146725447-4d92caed-2dd0-4f11-91d1-8da9cd8ff08b.gif)
**方式3:**
在代码任意位置输入"**@zz**".
![预览图](https://user-gold-cdn.xitu.io/2020/2/28/17089999afc7a21c?w=722&h=408&f=gif&s=299355)
![GIF](https://user-images.githubusercontent.com/8264787/146725402-30b34119-b709-4d49-adb2-af8dbb786d3b.gif)
## 👩🏫图解正则
<details>
<summary>查看详情</summary>
每次在any-rule中选择正则后会弹出提示, 可点击"🤖图解正则".
![预览图](https://user-gold-cdn.xitu.io/2020/2/23/1706e32c3a6fb116?w=533&h=95&f=png&s=21563)
![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, 在此对作者表示敬意和感谢.
</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
欢迎大家PR, 步骤如下:
1. **正则**请在**packages/www/src/RULES.js**中添加.
@ -83,25 +91,6 @@ vscode应用商店中搜索"**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

@ -87,16 +87,16 @@ function insertRule(document: TextDocument, position: Position, ruleString: stri
// 获取配置
function getConfig() {
const configuration = workspace.getConfiguration();
const { triggerString } = configuration['any-rule'];
const { triggerString, supportedLanguages } = configuration['any-rule'];
const { length } = triggerString;
const triggerStringStart = triggerString.substr(0, length - 1);
const triggerStringEnd = triggerString.substr(-1);
console.log(supportedLanguages);
return {
triggerStringStart,
triggerStringEnd,
triggerString,
// 预留
supportedLanguages: '*'
supportedLanguages
}
}