演出乐器价格联盟

一篇文章, 零起步学会JavaScript中的正则表达式

尚硅谷教育 2018-04-16 06:38:33


正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

下面文章中,我们就从凤姐的择偶标准,来看看JavaScript中的正则表达式↓↓↓



1 .从凤姐的择偶标准开始:

本人对伴侣要求如下:

  第一,必须为北京大学或清华大学硕士毕业生。必须本科硕士连读,中途无跳级,不留级,不转校。在外参加工作后再回校读书者免。

  第二,必须为经济学专业毕业。非经济学专业毕业则必须精通经济学。或对经济学有浓厚的兴趣。

  第三,必须具备国际视野,但是无长期定居国外甚至移民的打算。

  第四,身高176--183左右。长得越帅越好。

  第五,无生育史。过往所有女友均无因自身而致的堕胎史。

  第六,东部户籍,即江、浙、沪三地户籍或黑龙江、广东、天津、山东、北京、吉林、辽宁等。

  东北三省和内蒙古等地户籍,西南地区即重庆、贵州、云南、西藏和湖南、湖北等地籍贯者不予考虑。 

第七,年龄25--28岁左右。即06届,07届,08届,09届毕业生。有一至两年的工作经验,06级毕业生需年龄在28岁左右,09级毕业生则需聪明过人。且具备丰富的社会实践经验。就职于国家机关,国有企事业单位者不愿考虑。但就职于中石油,中石化等世界顶尖型企业或银行者又比较喜欢。现自主创业者要商榷一番了。

2.凤姐使用这个“标准”能做哪些事情呢?

①对某一个男性应用这个标准,返回一个布尔值,从而知道这个男性是否满足自己的标准。——相当于我们使用正则表达式验证一个字符串是否满足规则。比如验证一个字符串是否是一个身份证号。

②对全中国的男性应用这个标准,返回一个数组,遍历这个数组,可以得到所有符合标准的男士。——相当于我们使用正则表达式获取一段文本中匹配的子字符串。比如将一篇文章中的电子邮件地址读取出来。

③对全中国的男性应用这个标准,把其中已婚的变成未婚。——相当于我们使用正则表达式替换所有匹配的部分。比如将一段文字中的”HelloWorld”替换为”HelloJava”

3.正则表达式:使用一段字符串定义的一个规则,用以检测某个字符串是否满足这个规则,或将目标字符串中满足规则的部分读取出来,又或者将目标字符串中满足标准的部分替换为其他字符串。

4.正则表达式零起步

4.1         创建正则表达式对象

①使用两个斜杠:var reg = /a/;类似创建数组可以使用[]、创建对象可以使用{}

new RegExp("a");类似创建数组可以new Array()、创建对象可以使用new Object()

4.2         正则表达式本身也是一个字符串,这个字符串由两种字符组成:

①普通字符,例如大、小写英文字母;数字等。

②元字符:被系统赋予特殊含义的字符。例如:^表示以某个字符串开始,$表示以某个字符串结束。

4.3         正则表达式初体验

①模式验证

//创建一个最简单的正则表达式对象

var reg = /o/;

//创建一个字符串对象作为目标字符串

var str = 'Hello World!';

//验证目标字符串是否满足我们指定的这个模式,返回结果true

document.write("/o/.test('Hello  World!')="+reg.test(str));

②匹配读取

//在目标字符串中查找匹配的字符,返回匹配结果组成的数组

var resultArr = str.match(reg);

//数组长度为1

document.write("resultArr.length="+resultArr.length);

document.write("<br />");

//数组内容是o

document.write("resultArr[0]="+resultArr[0]);

③替换

var newStr = str.replace(reg,'@');

//只有第一个o被替换了,说明我们这个正则表达式只能匹配第一个满足的字符串

document.write("str.replace(reg)="+newStr);//Hell@ World!

document.write("<br />");

//原字符串并没有变化,只是返回了一个新字符

document.write("str="+str);//str=Hello World!

 

4.4         匹配方式

①全文查找

如果不使用g对正则表达式对象进行修饰,则使用正则表达式进行查找时,仅返回第一个匹配;使用g后,返回所有匹配。

//目标字符串

var targetStr = 'Hello World!';

 

//没有使用全局匹配的正则表达

var reg = /[A-Z]/;

//获取全部匹配

var resultArr = targetStr.match(reg);

//数组长度为1

document.write("resultArr.length="+resultArr.length);

document.write("<br />");

//遍历数组,发现只能得到'H'

for(var i = 0; i < resultArr.length;  i++){

    document.write("resultArr["+i+"]="+resultArr[i]);

    document.write("<br />");

}

 

//使用全局匹配的正则表达式

var reg = /[A-Z]/g;

//获取全部匹配

var resultArr = targetStr.match(reg);

//数组长度为2

document.write("resultArr.length="+resultArr.length);

document.write("<br />");

//遍历数组,得到'H''W'

for(var i = 0; i < resultArr.length;  i++){

    document.write("resultArr["+i+"]="+resultArr[i]);

    document.write("<br />");

}

 

②忽略大小写

//目标字符串

var targetStr = 'Hello WORLD!';

 

//没有使用忽略大小写的正则表达式

var reg = /o/g;

//获取全部匹配

var resultArr = targetStr.match(reg);

//数组长度为1

document.write("resultArr.length="+resultArr.length);

document.write("<br />");

//遍历数组,仅得到'o'

for(var i = 0; i < resultArr.length;  i++){

    document.write("resultArr["+i+"]="+resultArr[i]);

    document.write("<br />");

}

 

//使用忽略大小写的正则表达式

var reg = /o/gi;

//获取全部匹配

var resultArr = targetStr.match(reg);

//数组长度为2

document.write("resultArr.length="+resultArr.length);

document.write("<br />");

//遍历数组,得到'o''O'

for(var i = 0; i < resultArr.length;  i++){

    document.write("resultArr["+i+"]="+resultArr[i]);

    document.write("<br />");

}

 

③多行查找

//目标字符串1

var targetStr01 = 'Hello\nWorld!';

//目标字符串2

var targetStr02 = 'Hello';

 

//匹配以'Hello'结尾的正则表达式,没有使用多行匹配

var reg = /Hello$/;

document.write(reg.test(targetStr01));//false

document.write("<br />");

document.write(reg.test(targetStr02));//true

 

//匹配以'Hello'结尾的正则表达式,使用多行匹配

var reg = /Hello$/m;

document.write(reg.test(targetStr01));//true

document.write("<br />");

document.write(reg.test(targetStr02));//true

 

5 .元字符

5.1         在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“\”,例如:\^

5.2         常用元字符

代码

说明

.

匹配除换行符以外的任意字符

\w

匹配字母或数字或下划线等价于[a-zA-Z0-9]

\W

匹配任何非单词字符。等价于[^A-Za-z0-9_]

\s

匹配任意的空白符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]

\S

匹配任何非空白字符。等价于[^\f\n\r\t\v]

\d

匹配数字。等价于[0-9]

\D

匹配一个非数字字符。等价于[^0-9]

\b

匹配单词的开始或结束

^

匹配字符串的开始,但在[]中使用表示取反

$

匹配字符串的结束

 

var str = 'one two three four';

//匹配全部空格

var reg = /\s/g;

//将空格替换为@

var newStr = str.replace(reg,'@');//one@two@three@four

document.write("newStr="+newStr);

 

var str = '今年是2014';

//匹配至少一个数

var reg = /\d+/g;

str = str.replace(reg,'abcd');

document.write('str='+str);//今年是abcd

 

var str01 = 'I love Java';

var str02 = 'Java love me';

//匹配以Java

var reg = /^Java/g;

document.write('reg.test(str01)='+reg.test(str01));//flase

document.write("<br />");

document.write('reg.test(str02)='+reg.test(str02));//true

 

var str01 = 'I love Java';

var str02 = 'Java love me';

//匹配以Java

var reg = /Java$/g;

document.write('reg.test(str01)='+reg.test(str01));//true

document.write("<br />");

document.write('reg.test(str02)='+reg.test(str02));//flase

 

6.字符集合:[]

代码

说明

[xyz]

字符集合。匹配所包含的任意一个字符。例如,[abc]可以匹配plain中的a

[^xyz]

负值字符集合。匹配未包含的任意字符。例如,[^abc]可以匹配plain中的p

[a-z]

字符范围。匹配指定范围内的任意字符。例如,[a-z]可以匹配az范围内的任意小写字母字符。

[^a-z]

负值字符范围。匹配任何不在指定范围内的任意字符。例如,[^a-z]可以匹配任何不在az范围内的任意字符。

 

var str01 = 'Hello World';

var str02 = 'I am Tom';

//匹配abc中的任何一

var reg = /[abc]/g;

document.write('reg.test(str01)='+reg.test(str01));//flase

document.write("<br />");

document.write('reg.test(str02)='+reg.test(str02));//true

 

7.重复

代码

说明

*

重复零次或更多次

+

重复一次或更多次

?

重复零次或一次

{n}

重复n

{n,}

重复n次或更多次

{n,m}

重复nm

 

document

    .write("/[a]{3}/.test('aa')="+/[a]{3}/g.test('aa'));//flase

document.write("<br />");

document

    .write("/[a]{3}/.test('aaa')="+/[a]{3}/g.test('aaa'));//true

document.write("<br />");

document       .write("/[a]{3}/.test('aaaa')="+/[a]{3}/g.test('aaaa'));//true

 

8 . 在正则表达式中表示“或者”:|

//目标字符串

var str01 = 'Hello World!';

var str02 = 'I love Java';

//匹配'World''Java'

var reg = /World|Java/g;

document.write("str01.match(reg)[0]="+str01.match(reg)[0]);//World

document.write("<br />");

document.write("str02.match(reg)[0]="+str02.match(reg)[0]);//Java

 

 

9.常用正则表达式

用户名

/^[a-zA-Z_][a-zA-Z_\-0-9]{6,10}$/

密码

/^[a-zA-Z0-9_\-\@\#\&\*]{6,12}$/

前后空格

/^\s+|\s+$/g

电子邮箱

/^[a-zA-Z0-9_\.-]+@([a-zA-Z0-9-]+[\.]{1})+[a-zA-Z]+$/




Ms.杨1分钟前

小伙伴们,节日快乐!

以上是不是你想看到的文章呀?

还想看到什么方面的呢?

留言说说吧(赞美、吐槽、疑问、提议。。。百无禁忌!)

ps:我的微信号↓↓↓~期待加我,随便聊聊~



友情链接

Copyright © 演出乐器价格联盟@2017