搜索
查看: 2833|回复: 5

请教数字匹配问题

[复制链接]

8

主题

26

帖子

302

积分

二级会员

Rank: 3Rank: 3

积分
302
QQ
发表于 2013-12-18 10:29:52 | 显示全部楼层 |阅读模式
本帖最后由 wisefox 于 2013-12-18 11:53 编辑

有很多11位的数字,跟电话号码差不多
无视前三位,现在有以下需求,
1).匹配出从第四位到第七位任意一位是4的号码
2).匹配出后五位是连号的,比如12345  或者23456  以此类推
        PS.这个我知道可以把所有的可能都列出来,但是想请教高人看有没有简单办法
3)同时满足上面两个条件的该怎么写

以下是示例号码


  1. 23535656789
  2. 33545675256
  3. 53727460010
  4. 63827260030
  5. 86757945678
复制代码


条件1)会匹配出1,5行
条件2)会匹配2,3,5行
条件3)会匹配第5行
回复

使用道具 举报

10

主题

82

帖子

672

积分

三级会员

Rank: 4

积分
672
发表于 2013-12-18 11:14:36 | 显示全部楼层

io.open();//打开控制台 var test = "12345678901"; str = ..string.match(test, "\d

io.open();//打开控制台

var test = "12345678901";

str = ..string.match(test, "\d{3,}4(\d{5})");
var m = str[1]-1;
var l = true;
for(i=2;#str;1){
        if(str[i]-i != m){
                l = false;
        }
}

if(l){
        io.print("满足条件:" ,test );
}
else {
        io.print("不满足条件");
}

execute("pause") //按任意键继续
io.close();//关闭控制台
回复

使用道具 举报

12

主题

309

帖子

1799

积分

荣誉会员

Rank: 8Rank: 8

积分
1799
发表于 2013-12-18 11:25:25 | 显示全部楼层

至少发一些示例的号码数据,然后再坐等别人帮你写代码。 做伸手党也请做一个有素质的伸手党,你认为别人可以一个一个的码出一堆的手机号来符合你的测试条件? 或者你

至少发一些示例的号码数据,然后再坐等别人帮你写代码。
做伸手党也请做一个有素质的伸手党,你认为别人可以一个一个的码出一堆的手机号来符合你的测试条件?
或者你认为别人只要打个响指不用测试思考,你的答案就有了?!
回复

使用道具 举报

8

主题

26

帖子

302

积分

二级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2013-12-18 11:50:13 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=63742&ptid=11369][c

auaau 发表于 2013-12-18 11:25
至少发一些示例的号码数据,然后再坐等别人帮你写代码。
做伸手党也请做一个有素质的伸手党,你认为别人可 ...

不好意思,是我疏忽了,我现在就加上
回复

使用道具 举报

12

主题

309

帖子

1799

积分

荣誉会员

Rank: 8Rank: 8

积分
1799
发表于 2013-12-18 12:23:34 | 显示全部楼层

[quote]条件1)会匹配出1,5行 条件2)会匹配2,3,5行 条件3)会匹配第5行[/quote] 你这个条件与你给出来的数据是矛盾的,第一行号码里

条件1)会匹配出1,5行
条件2)会匹配2,3,5行
条件3)会匹配第5行

你这个条件与你给出来的数据是矛盾的,第一行号码里没有4.
仔细看一下你自己的问题,估计你自己不难写出答案。

下面的代码仅供参考:
  1. import console;

  2. str = /*
  3. 23535656789
  4. 33545675256
  5. 53727460010
  6. 63827260030
  7. 86757945678
  8. */

  9. console.log("============带4号码============")
  10. var unlucky  = {};
  11. for num in string.gmatch( str,"\d\d\d\d*4\d*") {
  12.         console.log(num)
  13.         unlucky [num] = true;
  14. }

  15. console.log("============后5位连号============")
  16. var lucky = {};
  17. string.replace(str,"(\d{6}(\d{5}))",function(num,f){
  18.         for(i=2;#f ){  
  19.                 if( f[i] - f[i-1] != 1 ) return;
  20.         }
  21.         console.log(num)
  22.         lucky [num] = true;
  23. } )

  24. console.log("============带4而且后5位连号============")
  25. for(num,v in unlucky ){
  26.         if( lucky [num] ) console.log(num);
  27. }
复制代码

回复

使用道具 举报

10

主题

82

帖子

672

积分

三级会员

Rank: 4

积分
672
发表于 2013-12-18 16:33:22 | 显示全部楼层

2).匹配出后五位是连号的,比如12345 或者23456 以此类推 你这个到底是五位的还是任意连续的?“条件2)会匹配2,3,5行”这个不对吧

2).匹配出后五位是连号的,比如12345  或者23456  以此类推
你这个到底是五位的还是任意连续的?“条件2)会匹配2,3,5行”这个不对吧
回复

使用道具 举报

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

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2019-7-22 10:08 , Processed in 0.078125 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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