http://blog.csdn.net/u013142781
来源:互联网 发布:无头骑士异闻录 知乎 编辑:程序博客网 时间:2024/06/15 22:11
因为小宝鸽正则表达式用得不多,一般也就网上找找js验证手机号、邮箱、qq、身份证号码的正则表达式,然后使用。那些正则表达式,看着似懂非懂的样子,始终存在一些疑问,几番想系统学习一下正则表达式,但是那些疑惑就像修仙大道的心结,让我正则表达式水平毫无存进。最近刚好有这样的时间把这些问题弄明白,并且对正则表达式有了入门的理解。
(1)为什么很多JavaScript正则表达式串都是以“/”开头并且以“/”结尾?
其实这是一种正则表达式的隐式构造方式.
在JavaScript里面,一般有两种构造方式
1、用两斜杠将正则表达式夹在中间。
例:var reg = /\w+/;
2、使用new来创建。
例:var reg = new RegExp(“\\w+”);
注意:这里的\\w是双斜杠,因为\本来就是字符串的转义字符,这里就经过了两次转义了。
第二种是正则对象的显式构造方法。
因此,如果你采用显式构造方法一定记得把前后的/去掉哦,不然,哼。
(2)为什么很多JavaScript正则表达式串都用^和$包含着正则表达式串
因为^ 和 $ 语言元素与输入字符串的开头和结尾匹配。
^表示必须以什么开头
$表示必须以什么结尾
^表示必须以什么开头,这个好理解,关于$我们看下面的例子:
如我们想匹配以1开头,后面跟着10数字(类似与手机号的弱验证)
那么我们正则表达式串可以这样:^[1][\d]{10}$
如果我们校验字符串为:
14564564564564654654654564654 //不匹配
14564564564 //匹配
如果我们把正则表达式最后面的$去掉:^[1][\d]{10},
结果是这样:
14564564564564654654654564654 //匹配
14564564564 //匹配
如图:
(3)正则表达式除了用来验证下手机号码、身份证号码,还能干什么?
正则表达式的用途
1、数据验证,例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
2、替换文本,可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
3、基于模式匹配从字符串中提取子字符串,可以查找文档内或输入域内特定的文本。
关于,数据验证,没什么好说的,就是平时那些js验证手机号啊,邮箱啊什么的,这里就不说了。
下面关于提取子字符串和替换文本,我们以Java为例,为什么是Java?谁让Java是世界上最好的语言呢!是它,就是它,咳咳,客观请看:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
提取子字符串和替换文本的例子都在上面的例子代码里面体现啦
运行结果:
(4)正则表达式内容不少,想要短时间全部掌握不可能,入门需要学习哪些呢?
下面,我们先简单了解下这些语法:
字符匹配:
重复匹配:
字符定位:
转义匹配:
上面的语法来自于博文:http://www.cnblogs.com/moss_tan_jun/archive/2010/08/15/1800281.html
上面的语法可能有些比较抽象,没有看懂并没有关系,日后用到在逐个研究。
了解了上面的语法之后我们来看看这些例子:
让我们开始第一个验证,输入的字符在a-g之间?
- 1
输入的字符在a-g之间并且长度为3?
- 1
输入的字符在a-g之间并且最大长度为3最小长度为1?
- 1
我如何在匹配像91230456, 01237648那样的固定8位数?
- 1
验证像INV190203 或 inv820830那样的前3位是不区分大小写的英文字母,剩余8位是数字
在前面的表达式中只能匹配前3个是小写英文字母的发票编号,如果我们输入大写字母那就不能匹配了。所以为了确保前3个字母是不区分大小写的,我们就要用表达式^[a-zA-Z]{3}。
完整的正则式如下:
- 1
我们可以验证简单的网址URL格式吗?
第一步:检查是否存在www:
- 1
第二步:域名必须是长度在1-15的英文字母:
- 1
第三部:以.com或者.org结束:
- 1
完整的表达式如下:
- 1
让我们在来看看BCD(其实也就是上面说的3条基本语法)如何验证email格式
第一步:email开始是长度在1-10的英文字母,最后跟一个”@”:
- 1
第二步:@后面是长度在1-10的英文字母,后面跟一个”.”:
- 1
第三步:最后以.com或.org结束:
- 1
最后完整的表达式如下:
- 1
以上正则例子出自博文:http://www.cnblogs.com/sxwgf/archive/2011/11/17/2252076.html,该博文还有日期验证的例子。
上面的一些例子可能看官们能看到懂,但是自己不动手试试,还是不放心,因此下面推荐两个在线测试正则表达式网站,可以验证上面的例子!
正则表达式在线测试网站,这两个网站都可以,挺好用的,但是个人还是推荐前者(虽然界面没有那么美观):
http://tool.chinaz.com/regex/
http://tool.oschina.net/regex/
博主的正则表达式只是入门,如果上文有任何不正确的地方望评论纠正,不胜感激!
- http://blog.csdn.net/u013142781
- 【转】VMware Ubuntu安装详细过程 (原文出处http://blog.csdn.net/u013142781)
- http://blog.csdn.net/
- http://blog.csdn.net
- http://blog.csdn.net/matrix2003b/
- http://blog.csdn.net/matrix2003b/
- http://blog.csdn.net/sinapaper/
- http://blog.csdn.net/jjcwww
- http://blog.csdn.net/hkbarton/
- http://blog.csdn.net/cpluser/
- http://blog.csdn.net/chensheng913/
- http://blog.csdn.net/duoshanx
- http://blog.csdn.net/calvinxiu/
- http://blog.csdn.net/shardy
- http://blog.csdn.net/aoosang
- http://blog.csdn.net/hacker_zihan/
- http://blog.csdn.net/lenlydia/
- http://blog.csdn.net/fatalerror99/
- 洛谷2704 炮兵阵地
- C#解析JSON字符串总结
- 读懂正则表达式就这么简单
- K-means聚类分析与python实现
- jQuery的load方法设计动态加载及解决被加载页面js
- http://blog.csdn.net/u013142781
- 浅谈数组算法slice
- 配置你自己独一无二的vim
- codeforces Remove Extra One(思维)
- java Semaphore 计数信号量
- 异常处理-三角形
- 用file_get_contents抓取网页乱码的2种解决方式
- 推荐给喜欢挑战编程的学生
- angularjs 点击div外面,隐藏该div