码迷,mamicode.com
首页 > Web开发 > 详细

20150209--JS巩固与加强6-02

时间:2016-05-06 02:07:32      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

、编写正则表达式

技巧正则编写三步走:

1查什么
2)查多少
3)从哪查

1、正则表达式构成:

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

2查多少(元字符——限定符)

限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

* 匹配前面的子表达式零次或多次  (0到多)

+ 匹配前面的子表达式一次或多次 (1到多)

? 匹配前面的子表达式零次或一次 (0或1)

{n} 匹配确定的 n 次

{n,} 至少匹配n 次    {4,} 最少匹配4次

{n,m} 最少匹配 n 次且最多匹配 m 次  {3,7}

示例代码:

例1:匹配连续的11位数字

技术分享

例2:匹配字符abc在字符串中出现的次数为0或1次

技术分享

例3:查询数字字符在字符串中最少出现4次

技术分享

例4:查询文本字符(a-z)字符串出现的次数在3,7之间

技术分享

3、匹配原则:

1)贪婪匹配

在正则表达式,我们把以上能匹配多就不匹配少的情况,就称之为贪婪匹配。(默认原则)

2)贪婪匹配

在正则表达式中,可以通过?问号来改变我们的贪婪匹配原则,我们把这种原则称之为非贪婪匹配原则

示例代码: 加上?之后,会以3次为单位,进行分隔,不足3次的,会省略

不加?,会匹配数字数量为3-9的字符,并以9个为一组进行分隔

技术分享

4、查什么(元字符——匹配符

字符匹配符用于匹配某个或某些字符

在正则表达式通过一对方括号括起来的内容,我们称之为字符簇

l [a-z] :匹配a-z中的任一字符

l [A-Z] :匹配A-Z中的任一字符

l [0-9] :匹配0-9中的任一数字 \d

l [0-9a-z] : 匹配0-9或a-z中的任一字符

l [0-9a-zA-Z]:匹配0-9或a-z或A-Z中的任一字符

l [abcd] : 匹配字符a或字符b或字符c或字符d

l [1234]:匹配数字1或数字2或数字3或数字4

在正则表达式中的字符簇中,可以通过上档键^来取反

l [^a-z] :匹配除a-z外的任一字符

l [^0-9] :匹配除0-9外的任一字符 \D

l [^abcd] :匹配除字母abcd以外的任一字符

l \d :匹配一个数字字符 [0-9]

l \D :匹配一个非数字字符 [^0-9]

l \w :匹配包括下划线的任何单词字符 [0-9a-zA-Z_]

l \W :匹配任何非单词字符 [^\w]

l \s :匹配任何空白字符 空格、制表位等空白字符

l \S :匹配任何非空白字符 [^\s]

l .  :匹配除 "\n" 之外的任何单个字符

示例代码

例1:匹配任一数字字符

技术分享

例2:匹配Asw三个字符中的任一字符

技术分享

例3:匹配所有的空格

技术分享

例4:匹配三个连续的大写字母

技术分享

例5:匹配中文字符

技术分享

5、从哪查(元字符——定位符)

定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。

例1:匹配11位电话号码

技术分享

例2:匹配固定电话

020-87654321 38结构

0451-7654321 47结构

^\d{3}-\d{8}$

^\d{4}-\d{7}$

^\d{4}-\d{8}$

^ :上档键(开始位置)

$ :结束位置

\b :代表单词边界位置

\B :代表非单词边界

例3:单词边界与非单词边界

技术分享

6、特殊字符

1)转义符

在正则表达式中,\ 用于匹配某些特殊字符

/ + * ? ( ) [] {} . ^ $ \

示例代码:

例1:匹配[左侧符号

技术分享

例2:匹配网址中的.号

技术分享

例3:通过字符簇匹配.号

技术分享

7选择符

在正则表达式中,可以通过|代表选择符

例1:匹配hellojavascript或hellophp

技术分享

8、三种特殊用法

(?=) :正向预查

(?!) :负向预查(逆向预查)

(?:) :输出内容但不捕获

1)正向预查

技术分享

2)负向预查

技术分享

3)输出但不捕获

技术分享

、正则表达式——结巴程序

结巴程序

我...我是是..一个个...帅帅帅帅...哥!";

我是一个帅哥!

示例代码:

技术分享

说明:

解决方案:

1)首先把字符串中的所有.号移除替换为空字符

2)匹配到所有重复的字符,并通过子表达式匹配到原有内容,并放入一号缓冲区中

3)replace方法中,第二个参数,可以使用$n(n>=1&&n<=99的正整数)来引用n号缓冲区的内容。

、编写正则工具箱

技术分享

代码请参考tools.html

、作业汇总

zuoye01.html

zuoye02.html

zuoye04.html

snake.html

十一、作业

邮箱验证

rxy@itcast.cn

IP验证

192.168.114.10

0-223第一位

0-255后三位

20150209--JS巩固与加强6-02

标签:

原文地址:http://www.cnblogs.com/lifushan/p/5463951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!