199,一个被正则表达式遗忘的号码段?

前不久换手机号,东想西想,最后选了个电信的199号码段。这下好了,当我注册某些网站的账号时,弹出个非法号码字段,惊了!怎么回事???

于是想到:当我们注册某网站的时候,需要输入手机号进行注册。比如唯品会的注册界面,当你输入的手机号不对时就会出现错误提示:请输入正确的手机号码。

这个是怎么实现的呢?比如我那个199开头的电信号,总是被误认为非法号码。究其原因,原来是正则表达式搞的鬼。

首先了解一下什么是正则表达式?打开百度百科,它的解释如下:

所以,在程序设计上,正则表达式通常用于匹配字符串,一般是匹配有规律的字符串,多数用于表单验证。比如注册网站时,我们常常需要按要求填写的那些账号密码信息等。

正则表达式怎么写出来的,首先让我们看看正则表达式是什么样子的?

几个常见的正则表达式
功能实现 正则表达式
Email地址 ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名 [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
身份证号 ^\d{15}|\d{18}$
帐号是否合法 ^[a-zA-Z][a-zA-Z0-9_]{5,15}$

坐好了,准备发车!接下来看看正则表达式是怎么写的?这些字符代表什么意思?以及手机号的正则表达式是怎样的?

正则表达式-特殊字符
. 表示除了换行之外的所有单个字符 \w 表示匹配数字,字母,下划线[A-Z0-9a-z _]
* 表示匹配任意多次可以是0,一般结合其它字符使用 \W 表示匹配非数字,非字母,非下划线[^A-Z0-9a- z_]
[] 表示范围 \d 表示数字[0-9]
^ 表示非 \D 表示非数字[^0-9]
+ 表示至少出现一次 {n,} 至少匹配n次,{n}:表示匹配n次,{n,m}:表示最少n次,最多m次
正则表达式-锚元字符
/^ 从头匹配
$/ 从尾部匹配
\b 匹配边界
\s 匹配空格
正则表达式-选择字符
| 或者的意思
() 表示分组

那么常用的手机号的正则表达式是怎样的?

首先得了解一下三大运营商的各号码段如何:

于是满足所有条件的手机号码的正则表达式诞生了:

/^1([358][0-9]|4[579]|66|7[0135678]|9[89])\d{8}$/

原文地址:https://www.cnblogs.com/loober/p/10306296.html

时间: 2024-10-29 17:51:26

199,一个被正则表达式遗忘的号码段?的相关文章

维护 物料主数据 号码段

转自 http://blog.sina.com.cn/s/blog_4e997c670100dz1k.html 维护物料主数据的编号范围 一.说明 模块:MM. 此项操作是在SAP系统后台,为需要使用的物料类型设定编号范围.它的操作是针对整个Client的.首先维护不重复的号码组,每组可包含内部段和外部段(两者可选其一或都含有),然后将需要设定的物料类型分派给号码组. 如果物料类型分派的号码组有内部号码段,那么在创建新物料主数据时不输入物料号,系统按自增式自动给出一个新号:如果有外部号码段,在创

SD--如何增强是同一类出库单使用不同号码段

在现实的业务中,一个公司有多个销售组织,它们使用同一个出库类型,业务往往希望它们创建的出库单的号码采用不同号码范围.但在sap里出库单号码范围是在出库单类型里设置,也就是使用相同的出库单类型,也就使用相同的号码范围.如果要达到上需业务需求,我们可以使用增强实现.具体实现参见下面的步骤: 步骤1:创建多个号码段: path: Spro->Sales and Distribution->Sales->Sales Documents->Sales Document Header->

PHP正则表达式屏蔽电话号码中间段

要屏蔽电话号码中间段,首先要知道电话号码的正则表达式. 先来看看PHP匹配电话号码的正则表达式. 匹配固定电话的正则表达式为: /(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i 匹配手机号码的正则表达式为: /(1[358]{1}[0-9]{9})/i 要用一个表达式来匹配所有的电话号码只需要将它们合并起来就可以了,如下: /(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)|(1[358]{1}[0-9]{9}

全国各地号码段采集工具

话不多说,先上图 最新在写一个项目,需要通过IP生成IP所在地对应的号码,大体的业务逻辑就是根据IP获取到对应的城市,根据城市找到号码段,然后生成随机号码,代码比较乱,仅供参考! static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("========================================华少号码段维护工具==============

判断一个字符串里是否含有某段字符?怎么截取一段字符?

写前端过程中遇到的最多的字符串操作莫过于 :判断一个字符串里是否含有某段字符 ,和 截取一段字符串. 字符串操作有很多方法,其实一般只要掌握以上两个就够用了,其他方法随他去吧,好,下面就以上两个方法讲解一下. 1.判断一个字符串是否含有某段字符,使用indexOf()方法: str.indexOf("参数1","参数2");参数1表示判断是否包含的小字符串, 参数2表示从左到有依次判断的起始位置,默认从0开始,str表示用于寻找的原字符串,ps:如果原字符串含多个判

正则表达式对qq号码进行校验

package 正则表达式; /*对QQ号码进行校验 要求5~15位,不能以0开头,只能是数字*/ import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String qq = "23412312"; String rege

转:假设有一个字符串aabcad,请编写一段程序,去掉字符串中不相邻的重复字符。

假设有一个字符串aabcad,请编写一段程序,去掉字符串中不相邻的重复字符.即上述字串处理之后结果是为:aabcd; 分析,重点考查 char 与int 的隐式转换.程序如下: -(void) removeRepeat:(NSString *)aNum { NSMutableArray *mArr = [[NSMutableArray alloc]initWithCapacity:10]; for(int i = 0; i<aNum.length; i++) { [mArr addObject:

java进行ip号码段正则匹配

java正则匹配IP号码段 public static boolean IPMatch(List ips, String ip) { if (ips.contains(ip)) { return true; } for (int i = 0; i < ips.size(); i++) { List lip = Arrays.asList(ips.get(i).toString().split("\\.")); String re = "^"; for (int

C 一个字符串有三段,第一段原样输出,第二段为要输出字符串的长度,第三段为根据第二段长度补齐第一段

例如:输入abc 11 12,输出abc12121212 #include<stdio.h> #include<string.h> int main(){ char a[100],b[100]; int len=0,i,j; int flag,t; gets(a); for(i=0;a[i]!=' ';i++){ b[i]=a[i]; } t=i; for(j=i+1;a[j]!=' ';j++){ len=len*10; len=len+a[j]-'0'; } flag=j+1;