前辈们好,我想做一个特殊号码(手机号码)筛选器,规则如下:
号码末5位数相同 
号码末4位数相同并末4位号码中只包含2、3、5、6 
号码末4位数递增 
号码末4位AABB并BB中只包含0、1、7 
号码末8位ABABABAB 
我目前的方案是号码通过文件读入数据存放到数组,然后根据规则写函数来找号码,但是将规则编写成程序有点难,请高人指点?

解决方案 »

  1.   

    这个用正则最好了,这里只举个第二个"号码末4位数相同并末4位号码中只包含2、3、5、6  "的例子,代码如下:
    Private Sub Form_Load()
        Dim strData$
        Dim reg As Object
        Dim matchs As Object, match As Object
        
        strData = "13943588888" & vbCrLf & _
                    "13943586666" & vbCrLf & _
                    "13943581324" & vbCrLf & _
                    "13943555555"
        Set reg = CreateObject("vbscript.regexp")
        reg.Global = True
        reg.IgnoreCase = True
        reg.Pattern = "\d{7}([2356])\1\1\1"
        
        Set matchs = reg.Execute(strData)
        
        For Each match In matchs
            Debug.Print match
        Next
    End Sub
    第一个的话顺便写下吧,是:
    \d{6}(\d)\1\1\1\1其他自己处理
      

  2.   

    号码末4位数递增  
    号码末4位AABB并BB中只包含0、1、7  
    号码末8位ABABABAB  这三个用正则表达式,怎么写啊,请高手再指点一下。
      

  3.   

    号码末4位数递增  的表达式是 (0(?=1)|1(?=2)|2(?=3)|3(?=4|$)|4(?=5|$)|5(?=6|$)|6(?=7|$)|7(?=8|$)|8(?=9|$)|9(?=0|$)){4}$
    号码末4位AABB并BB中只包含0、1、7  的表达式是 \d{7}(\d)\1([017])\2
    号码末8位ABABABAB 的表达式是 \d{3}(\d)(\d)\1\2\1\2\1\2
    楼主可以参考下此贴:
    http://topic.csdn.net/u/20090921/23/94186fe7-a246-43f6-8ead-55b61c9b8064.html
    当年我和楼主一样是正则小菜
      

  4.   

    号码末4位AABB并BB中只包含0、1、7 的表达式是 \d{7}(\d)\1([017])\2
    这个规则连末四位相同的号码也都给匹配出来,请问如何改进?
    例如这个号码也出来:15017291111