求判断一串字符是否包含非法的手机号码
字符串=“13800138000,1380013822,13800013800000,138921444,444”字符串正常的格式为手机号码之间用逗号相隔,可能会有很多个,想求效率高的判断字符里面是否包含非手机号码的方法。
我现在用循环,一旦有10W个以上的手机号码,好像就很慢了。。。。。 --------------------编程问答-------------------- string phone = "13800138000,1380013822,13800013800000,138921444,444";
string[] phones = phone.Split(',');
foreach (string item in phones)
{
if (!IsHandset(item))
{
//alert("错误的手机号码!")
}
}
public bool IsHandset(string str_handset)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^[1]+[3,5,8]+\d{9}");
}
互相学习,说错勿怪! --------------------编程问答-------------------- 10W个以上的,可以先过滤掉非11位的数字
再作判断
--------------------编程问答--------------------
谢谢热心的兄弟,我现在就是这样的。。。
有更有效率一点的么。。。。。。 --------------------编程问答--------------------
我现在只是需要判断字符串是否包含非法的手机号码。
就是说,用最快的速度,找出字符串里面包含 非11位的号码或者11位的号码但不是手机号码。。。
老大,有好的建议么? --------------------编程问答-------------------- 十万个- -
直接用正则啊
((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
如果你拿到了字符串
并且字符串不用做修改
正则是最快的
其他方法现在没想到
你试试
然后告诉我- - --------------------编程问答--------------------
老大。。。
不行。。。
我用字符串 "13800138000"跟字符串"13800138000,11"测试 ,结果是一样的 。。。 --------------------编程问答-------------------- 第一步先要搞定分隔符
var posList = new List<int>();--------------------编程问答--------------------
for (var i = 0; i <= str.Length; i++)
if (str[i] == ',')
posList.Add(i);
老大。。。
这个什么意思 ?
接着呢?? --------------------编程问答-------------------- 关注,,,观望中,,,帮顶,,,效率是个很有意思的东西 --------------------编程问答--------------------
刚写帮顶 。。。 --------------------编程问答-------------------- 高手呢。。。。。 --------------------编程问答--------------------
接着就在posList取值去验证手机号码了。 --------------------编程问答--------------------
第一步先要搞定分隔符var posList = new List<int>();
for (var i = 0; i <= str.Length; i++)
if (str[i] == ',')
posList.Add(i);
老大。。。
这个什么意思 ?
接着呢??
接着就在posList取值去验证手机号码了。
额之前就是这样 。。。
求更好的方法
补充:.NET技术 , ASP.NET