开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3027|回复: 14
收起左侧

[闲聊] 准备设计一种匹配靓号的表达式

[复制链接]

结帖率:90% (9/10)
发表于 2021-12-30 17:14:09 | 显示全部楼层 |阅读模式   重庆市重庆市
文档都写好了:
1)需求:
匹配有一定规律的靓号,如:
aaa//豹子
abc//顺子
cba//倒顺
aabb//连对
abab
abac
acbc
abcabd
abcdbc
abcadc
...

2)预先示例:
匹配包含豹子:{a;a;a}
匹配豹子结尾:{a;a;a}$
匹配包含顺子:{a;a+1;a+2}
匹配135开头,连对结尾:^135*{a;a;b;b}$
匹配135,165,185,...开头:^1?5
匹配我的QQ2326292725:^{;a;?;a;?;a;?;a;?;a;?}

3)语法:
* 匹配任意长度任意字符
? 匹配单个任意字符
^ 限定开头,如果不限定开头,从任意位置尝试匹配
$ 限定结尾,如果限定结尾,要求匹配完后字符串到达结尾
大括号:{},指示里面为算术表达式,例如:{1+1}
分号:;,大括号里面可以用分号分开多个算术表达式,例如:{1+1;3+2;},末尾算术表达式可以省略。分号分开等效于不要分号,每个算术表达式单独用{}括起来

4)算术表达式:
一个算术表达式匹配一个(数字)字符
支持运算符+-*/%=,支持()
支持负数,不支持小数,运算过程中均截断为整数

变量:表达式中出现的字母为变量,变量不需要定义,首次出现,即为定义,后面出现,就算引用,等同于定义时“配平”的值。
例如:{a;a+1;a+2},a首次出现时,被定义为当前位置出现的数字,第二次出现,引用a的值,+1,第三次出现,引用a的值,+2

配平:算术表达式中的=运算符不是赋值,可以理解成“配平”。
可以有这种语法{1=a},配平会尝试,使=两边的值相等,如果无法做到,则匹配失败。
为什么引入配平概念:方便定义变量。比如没有定义a时:{a},为什么a就定义成当前位置的数字了呢?这是什么逻辑呢?
理解上,可以虚拟一个this变量,表示当前位置数字,整个表达式会和this尝试配平,
每个算术表达式就可以理解成表示前面有一个“this=”,上面的算术表达式就是{this=a},执行到=就,就配平this和a。
因为当写算术表达式的时候,大多是想比较当前位置的数字是不是和算术表达式相等,而特殊的定义变量时,仅仅是需要读入当前位置的数字。
所以引入了配平,判断和赋值,用同一个运算符实现。
配平不仅仅是变量名挨着=,可以是任意表达式,类似方程一样,给他解出来。
复杂的:{100=(3+a)*10},如果a未定义,则a被定义为7,匹配返回成功;如果a已定义为7,匹配返回成功;如果a已定义为其他值,匹配返回失败,
特殊的:{a+b=5}或{a=b},如果ab均未定义,匹配失败,类型方程无解……
特殊的:{3=10/a},不能整除,结果未定义(还没想好实现成什么样)
特殊的:{3=a%10},如果a没有定义,因为%没有逆运算,结果未定义(还没想好实现成什么样)




点评

虽然我看不懂后面的但我大为震撼。。。   广东省珠海市  发表于 2021-12-30 18:06
虽然我看不懂后面的但我大为震撼。。。   广西壮族自治区南宁市  发表于 2021-12-30 17:43

评分

参与人数 3好评 +1 精币 +4 收起 理由
精易粉丝 + 1 2年了 设计好了没
tellmesy + 1 + 2 虽然我看不懂后面的但我大为震撼。。。
渡不得…… + 1 虽然我看不懂后面的但我大为震撼。。。

查看全部评分

结帖率:90% (9/10)

签到天数: 25 天

 楼主| 发表于 2023-3-29 15:18:29 | 显示全部楼层   重庆市重庆市
@精易粉丝 用户可扩展靓号筛选器
https://bbs.125.la/forum.php?mod=viewthread&tid=14718244
(出处: 精易论坛)
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 25 天

 楼主| 发表于 2022-2-5 23:53:56 | 显示全部楼层   重庆市重庆市
ewffvd3343 发表于 2021-12-31 03:26
[mw_shl_code=javascript,true]靓号检测:主要可以检测连号(正连 12345、倒连65432)、AABB号、手机号码、 ...

嗯嗯,我也查到了,就是有点难理解和修改
回复 支持 反对

使用道具 举报

结帖率:100% (27/27)
发表于 2021-12-31 05:24:36 高大上手机用户 | 显示全部楼层   湖南省邵阳市
正则已经够让我掉发了……
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2021-12-31 03:26:20 | 显示全部楼层   湖北省恩施土家族苗族自治州
[JavaScript] 纯文本查看 复制代码
靓号检测:主要可以检测连号(正连 12345、倒连65432)、AABB号、手机号码、日期号(生日号、年度号)、ABBCABB号,3位以上重复号。更多类型号码检测可以根据以下表达式改造。

  ' 匹配6位顺增   regex.Pattern = "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}\d"

     匹配3位以上顺增   regex.Pattern = "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3,}+\d

  ' 匹配6位顺降   regex.Pattern = "(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5}\d"

  ' 匹配6位顺增或顺降   regex.Pattern = "(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5})\d"

  匹配4-9位连续的数字   (?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3,}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){3,})\d

  匹配3位以上的重复数字   ([\d])\1{2,}

  匹配日期类型的数字   (19|20)[\d]{2}(1[0-2]|0?[1-9])(31|2[0-9]|1[0-9]|0?[0-9])

  手机号码类   (13[0-9]|15[0-9]|18[0-9])([\d]{2,4}){2}

  匹配33111类型的   ([\d])\1{1,}([\d])\2{2,}

  匹配5331533类型的   (([\d]){1,}([\d]){1,})\1{1,}

  匹配22334,123355类型的   ([\d])\1{1,}([\d])\2{1,}

  以上正则均在MTracer 2.0中调试并在实际应用中通过,欢迎大家发表自己的看法以及分享自己的技术与心得。  

网上找了一大堆 正则是可行的
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2021-12-31 03:18:10 | 显示全部楼层   湖北省恩施土家族苗族自治州

[mw_shl_code=javascript,true]
01        尾数不是4的        \d+[^4]$
02        不能含4的        [0-35-9]{11}
03        AABB尾号        ^\d+(\d)(?!\1)(\d)\2((?!\2)\d)\3$
04        AAA尾号        ^\d+(\d)(?!\1)(\d)\2{2}$
05        AAA非尾号        ^(\d)+(?!\1)(\d)\2{2}(?!\2)\d+$
06        AAA不限位        ^(\d)+(?!\1)(\d)\2{2}(?!\2)\d*$
07        AAAB尾号        (\d)+(?!\1)(\d)\2{2}((?!\2)\d)$
08        ABAB尾号        ^\d{7}(\d)((?!\1)\d)\1\2$
09        AABA尾号        ^\d{7}(\d)\1((?!\1)\d)\1$
10        ABAA尾号        ^\d{7}(\d)((?!\1)\d)\1{2}$
11        ABBA尾号        ^\d{7}(\d)((?!\1)\d)\2\1$
12        ABCC尾号        `^\d{7}(\d)((?!\1)\d)((?!\1
13        AABBB不限位        (\d)\1{1,}(\d)\2{2,}
14        ABBABB,AABAAB不限位        ((\d)\2*(?!\2)(\d)\3*)\1+
15        AABB,AAABB,AABBB不限位        (\d)\1{1,}(\d)\2{1,}
16        3位以上的重复数字        (\d)\1{2,}
17        6位顺增        `(?:0(?=1)
18        3位以上顺增        `(?:0(?=1)
19        6位顺降        `(?:9(?=8)
20        6位顺增或顺降        `(?
回复 支持 反对

使用道具 举报

结帖率:95% (77/81)

签到天数: 17 天

发表于 2021-12-30 23:28:19 | 显示全部楼层   江苏省常州市
好像有这方面的软件
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 7 天

发表于 2021-12-30 21:08:26 | 显示全部楼层   重庆市重庆市
期待
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 25 天

 楼主| 发表于 2021-12-30 21:01:10 | 显示全部楼层   重庆市重庆市

正则不支持
回复 支持 反对

使用道具 举报

结帖率:100% (10/10)
发表于 2021-12-30 20:45:53 | 显示全部楼层   湖南省永州市
何故不用正则
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表