diff --git a/CHANGELOG.md b/CHANGELOG.md index c9fce7e..674725a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # 更新日志 +- 0.0.9 +1. 修复"ed2k"正则错误 + - 0.0.8 1. 优化车牌号正则 diff --git a/README.md b/README.md index e23563e..0b924a9 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ https://any86.github.io/any-rule/ ### ed2k链接(宽松匹配) ```javascript -/^ed2k:\/\/|file|.+|\/$/ +/^ed2k:\/\/\|file\|.+\|\/$/ ``` ### 磁力链接(宽松匹配) @@ -77,52 +77,52 @@ https://any86.github.io/any-rule/ ### 版本号格式必须为X.Y.Z ```javascript -/^\d+(\.\d+){2}$/ +/^\d+(?:\.\d+){2}$/ ``` ### 视频链接地址(视频格式可按需增删) ```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 ``` ### 图片链接地址(图片格式可按需增删) ```javascript -/^https?:\/\/.*?(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)$/i +/^https?:\/\/.*?(?:gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)$/i ``` ### 24小时制时间(HH:mm:ss) ```javascript -/^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)/ +/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/ ``` ### 12小时制时间(hh:mm:ss) ```javascript -/^(1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/ +/^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/ ``` ### base64格式 ```javascript -/^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i +/^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i ``` ### 数字/货币金额(支持负数、千分位分隔符) ```javascript -/(^[-]?[1-9]\d{0,2}($|(,\d{3})*($|(\.\d{1,2}$))))|((^[0](\.\d{1,2})?)|(^[-][0]\.\d{1,2}))$/ +/(?:^[-]?[1-9]\d{0,2}(?:$|(?:,\d{3})*(?:$|(\.\d{1,2}$))))|(?:(?:^[0](\.\d{1,2})?)|(?:^[-][0]\.\d{1,2}))$/ ``` ### 数字/货币金额 (只支持正数、不支持校验千分位分隔符) ```javascript -/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/ +/(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/ ``` -### 银行卡号(16或19位) +### 银行卡号(10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)) ```javascript -/^([1-9]{1})(\d{15}|\d{18})$/ +/^[1-9]\d{9,29}$/ ``` ### 中文姓名 ```javascript -/^([\u4e00-\u9fa5·]{2,16})$/ +/^(?:[\u4e00-\u9fa5·]{2,16})$/ ``` ### 英文姓名 @@ -132,42 +132,42 @@ https://any86.github.io/any-rule/ ### 新能源车牌号 ```javascript -/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](?:(?:[0-9]{5}[DF])|(?:[DF][A-HJ-NP-Z0-9][0-9]{4}))$/ +/[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))$/ ``` ### 非新能源车牌号 ```javascript -/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-Z0-9挂学警港澳]$/ +/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/ ``` ### 车牌号(新能源+非新能源) ```javascript -/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](?:(?:[0-9]{5}[DF])|(?:[DF][A-HJ-NP-Z0-9][0-9]{4})|[A-HJ-NP-Z0-9]{4}[A-Z0-9挂学警港澳])$/ +/^(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 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})$/ ``` ### 网址 ```javascript -/^((https?|ftp):\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/\w\.-]*)*\/?/ +/^(?:(?:https?|ftp):\/\/)?(?:[\da-z.-]+)\.(?:[a-z.]{2,6})(?:\/\w\.-]*)*\/?/ ``` ### 中国手机号(严谨), 根据工信部2019年最新公布的手机号段 ```javascript -/^((\+|00)86)?1((3[\d])|(4[5,6,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-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/ ``` ### 中国手机号(宽松), 只要是13,14,15,16,17,18,19开头即可 ```javascript -/^((\+|00)86)?1[3-9]\d{9}$/ +/^(?:(?:\+|00)86)?1[3-9]\d{9}$/ ``` ### 中国手机号(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条 ```javascript -/^((\+|00)86)?1\d{10}$/ +/^(?:(?:\+|00)86)?1\d{10}$/ ``` ### 日期 ```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)$/ +/^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/ ``` ### 邮箱地址(email) diff --git a/package.json b/package.json index 46a04f7..52f54de 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publisher": "russell", "displayName": "any-rule", "description": "你要的\"正则\"都在这!", - "version": "0.0.8", + "version": "0.0.9", "engines": { "vscode": "^1.12.0" }, @@ -162,7 +162,7 @@ }, { "command": "extension.rule20", - "title": "zz: 银行卡号(16或19位)" + "title": "zz: 银行卡号(10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1))" }, { "command": "extension.rule21", diff --git a/packages/www/src/RULES.js b/packages/www/src/RULES.js index 15b09f0..c06a0fc 100644 --- a/packages/www/src/RULES.js +++ b/packages/www/src/RULES.js @@ -8,7 +8,7 @@ module.exports = [ { title: 'ed2k链接(宽松匹配)', - rule: /^ed2k:\/\/|file|.+|\/$/, + rule: /^ed2k:\/\/\|file\|.+\|\/$/, examples: ['ed2k://|file|%E5%AF%84%E7%94%9F%E8%99%AB.PARASITE.2019.HD-1080p.X264.AAC-UUMp4(ED2000.COM).mp4|2501554832|C0B93E0879C6071CBED732C20CE577A3|h=5HTKZPQFYRKORN52I3M7GQ4QQCIHFIBV|/'], }, @@ -64,53 +64,53 @@ module.exports = [ }, { title: '版本号格式必须为X.Y.Z', - rule: /^\d+(\.\d+){2}$/, + rule: /^\d+(?:\.\d+){2}$/, examples: ['16.3.10'] }, { title: '视频链接地址(视频格式可按需增删)', - 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'] }, { title: '图片链接地址(图片格式可按需增删)', - 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'] }, { title: '24小时制时间(HH:mm:ss)', - rule: /^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)/, + rule: /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/, examples: ['23:34:55'] }, { title: '12小时制时间(hh:mm:ss)', - rule: /^(1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/, + rule: /^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/, examples: ['11:34:55'], counterExamples: ['23:34:55'] }, { title: 'base64格式', - rule: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i, + rule: /^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i, examples: ['data:image/gif;base64,xxxx=='] }, { title: '数字/货币金额(支持负数、千分位分隔符)', - rule: /(^[-]?[1-9]\d{0,2}($|(,\d{3})*($|(\.\d{1,2}$))))|((^[0](\.\d{1,2})?)|(^[-][0]\.\d{1,2}))$/, + rule: /(?:^[-]?[1-9]\d{0,2}(?:$|(?:,\d{3})*(?:$|(\.\d{1,2}$))))|(?:(?:^[0](\.\d{1,2})?)|(?:^[-][0]\.\d{1,2}))$/, examples: [100, -0.99, 3, 234.32, -1, 900, 235.09] }, { title: '数字/货币金额 (只支持正数、不支持校验千分位分隔符)', - rule: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, + rule: /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/, examples: [0.99, 8.99, 666] }, { - title: '银行卡号(16或19位)', - rule: /^([1-9]{1})(\d{15}|\d{18})$/, - examples: [6222026006705354217] + title: '银行卡号(10到30位, 覆盖对公/私账户, 参考[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1))', + rule: /^[1-9]\d{9,29}$/, + examples: [6234567890, 6222026006705354217] }, { title: '中文姓名', - rule: /^([\u4e00-\u9fa5·]{2,16})$/, + rule: /^(?:[\u4e00-\u9fa5·]{2,16})$/, examples: ['葛二蛋', '凯文·杜兰特', '德克·维尔纳·诺维茨基'] }, { @@ -120,46 +120,43 @@ module.exports = [ }, { title: '新能源车牌号', - rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](?:(?:[0-9]{5}[DF])|(?:[DF][A-HJ-NP-Z0-9][0-9]{4}))$/, + rule: /[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))$/, examples: ['京AD92035', '甘G23459F'], }, { title: '非新能源车牌号', - rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-Z0-9挂学警港澳]$/, + rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/, examples: ['京A00599', '黑D23908'] }, { title: '车牌号(新能源+非新能源)', - rule: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](?:(?:[0-9]{5}[DF])|(?:[DF][A-HJ-NP-Z0-9][0-9]{4})|[A-HJ-NP-Z0-9]{4}[A-Z0-9挂学警港澳])$/, + 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})$/, examples: ['京A12345D', '京A00599'] }, { title: '网址', - rule: /^((https?|ftp):\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/\w\.-]*)*\/?/, + rule: /^(?:(?:https?|ftp):\/\/)?(?:[\da-z.-]+)\.(?:[a-z.]{2,6})(?:\/\w\.-]*)*\/?/, examples: ['www.qq.com'] }, { title: '中国手机号(严谨), 根据工信部2019年最新公布的手机号段', - rule: /^((\+|00)86)?1((3[\d])|(4[5,6,7,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[\d])|(9[1,8,9]))\d{8}$/, - examples: ['18311006933', '17888829981'] + 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}$/, + examples: ['008618311006933', '+8617888829981', '19119255642'] }, { title: '中国手机号(宽松), 只要是13,14,15,16,17,18,19开头即可', - rule: /^((\+|00)86)?1[3-9]\d{9}$/, - examples: ['18311006933', '17888829981'] + rule: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/, + examples: ['008618311006933', '+8617888829981', '19119255642'] }, { title: '中国手机号(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条', - rule: /^((\+|00)86)?1\d{10}$/, - examples: ['18311006933', '17888829981'] + rule: /^(?:(?:\+|00)86)?1\d{10}$/, + examples: ['008618311006933', '+8617888829981', '19119255642'] }, { - // 参考: https://www.cnblogs.com/mgod/archive/2007/04/26/728628.html title: '日期', - // rule: /^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/, - 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', '2020-01-01', '2000-02-29'], - counterExamples: ['2001-04-31', '2019-02-29'] + rule: /^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/, + examples: ['1990-12-12', '2020-1-1'] }, { title: '邮箱地址(email)',