手机尾数规则
| AAAAA | AAAA | AABBB | AAA | AA | AABBCC |AABB | ABABAB |ABAB | ABCDABCD| ABCD | ABC | ABCABC| AABCC | AAAB | ABCAB| ABAC | BACA | ABBA | **AB**AB|*A*A*A*A |XXABXXAB 数据库中有张号码边,里面有个字段存放的是手机号码.
如何通过上面规则快速筛选出符合某个规则的手机号码呢??我看到有有些网站通过将这个规则名称传入后台的。

解决方案 »

  1.   

    思路是这样
    规则是AABBCC
    从手机第一个开始截取0至6位,
    如果第一个跟第二个相不相同
    相同:相同就判断第三个跟第四个是不是相同
    不相同:重新截取,从手机第1位至第7位(截取的长度是规则的长度)重新判断
    如果全都相同,就标注颜色规则是ABCDABCD
    从手机第一个开始截取0至8位,
    拿到第一个数,然后向后(0-8位一个个对),如果第二个出现的位置跟规则里面的第二个出现的位置不同就重新从手机第二个(1至9位)开始对比
    如果是,就继续比第二个字母B
    如此类推思路是这样,代码LZ自己写吧。。
    我之前做就是这样的
      

  2.   

    啊?这样做的哦,从整体上看,我也是这样做的;手机号码表有个字段记录此手机尾数属于哪种规则,这样,客户在点击某个规则查询手机号码时候,就不用再截取号码一个一个重新判断了,只要将规则对应的id与那个字段匹配就行了。
    其实我现在有点问题,主要是在第一个匹配一个手机号码的时候,我是通过已经分析了规则的特点,然后给出了相应的 正则表达式来匹配,如尾数规则AABB(A!=B eg:1122、2233);
    但是,如果管理员新增加一个规则,而我程序中只对已有规则分析过,那如何对当前新加的一个规则,分析出它的特点呢?
    如:ABAC ,假设这个规则是新加的,如何有效的动态生成相应的正则表达式呢?