• :绿叶现版本暂时不再更新维护,全新版本已经在开发中,新系列图书(暂时8本,后面再续)也将于12月后陆续出版,敬请期待~

1.15 正则表达式基础总结

一、基本语法

1、正则表达式是什么?

正则表达式,就是用某种模式去匹配一类字符串的公式。学习正则表达式就是学习怎样定义一种“模式”的语法,说白了,就是学习各种匹配的规则,例如匹配数字要怎么要怎么写,匹配字符怎么写等等。

2、正则表达式的定义

正则表达式的定义共有2种方式:

(1)显式定义;

(2)隐式定义;

举例:

 
var myregex = new ReExp("[0-9]");    //显式定义
var myregex = /[0-9]/;    //隐式定义

3、test()方法

test()方法返回一个boolean值。也就是说,test()方法检查字符串str是否符合正则表达式模式rgexp,如果符合,则返回true;如果不符合,则返回false。

二、正则语法

1、常用元字符

正则表达式常用的元字符如下:

正则表达式元字符
元字符 说明
\d 匹配数字,相当于[0-9]
\D 匹配非数字,相当于[^0-9]
\w 匹配字母或数字或汉字或下划线
\W 匹配任意不是字母、数字、汉字或下划线的字符
\s 匹配任意的空白符,如空格、换行符、制表符等
\S 匹配任意不是空白符的字符
.(点号) 匹配除了换行符以外的任意字符
[...] 匹配方括号中的所有字符
[^...] 匹配非方括号中的所有字符

2、连接符

在正则表达式中,匹配数字或者英文字母的书写非常不方便。因此,正则表达式引入了连接符“-”来定义字符的范围。

正则表达式连接符
连接符 说明
[0-9] 匹配数字,等价于\d
[a-z] 匹配英文小写字母
[A-Z] 匹配英文大写字母
[0-9a-zA-z] 匹配数字或英文字母

3、限定符

限定符,就是限定某个或某类字符出现的次数。

常用的正则表达式限定符如下:

正则表达式限定符
限定符 说明
+ 重复1次或更多次
* 重复0次或更多次(任意次数)
? 重复0次或1次(最多1次)
{n} 重复n次
{n,} 重复n次或更多次(最少n次)
{n,m} 重复n到m次

4、定位符

在正则表达式中,定位符,说白了,就是限定某些字符出现的位置。

常用的正则表达式定位符如下:

正则表达式定位符
定位符 说明
^ 限定开始位置的字符
$ 限定结尾位置的字符
\b 限定单词(字)边界的字符
\B 限定非单词(字)边界的字符

5、转义字符

我们都知道正则表达式包括2种字符:(1)普通字符;(2)特殊字符。如果我们要匹配正则表达式中的特殊字符,我们就必须在该特殊字符前面加上反斜杠“\”将其进行转义。

举例:

 
go\+

分析:

因为+是正则表达式的特殊符号,因此必须在+前面加上“\”对其进行转义。

例如要匹配字面意义的“\”,就需要使用“\\”表示。

需要转义的字符有:$、(、)、*、+、.、[、]、?、\、/、^、{、}、|。这些字符都不需要记忆,见得多就自然而然记住了。

6、分组

分组又称为子表达式,即把一个正则表达式的全部或部分分成一个或多个组。其中,分组使用的字符为“(”和“)”,即左圆括号和右圆括号。分组之后,用小括号括起来的表达式看出一个整体来处理。

7、选择符

选择匹配符,很简单。在正则表达式中,选择匹配符是“|”,用于选择匹配2个选项之中的任意一个,类似JavaScript中的“或”运算。

例如,“abc|def1”匹配的是“abc”或“def1”,而不是“abc1”或“def1”。如果要匹配“abc1”或“def1”,应该使用分组符,即“(abcd|efgh)1”。

8、注释

语法:

 
(?#注释的内容)

说明:

如果要在正则表达式中包含注释,则最好打开“忽略模式里的空白符”选项。因此,此时可以在注释中添加空格、换行符号、制表符号等。一旦启用了该选项,即符号#之后的内容会全部被忽略掉。

这种注释方式暂时并未被JavaScript支持,但是其他高级语言可能使用到。对于学习前端的同学,可以忽略这个知识点。

9、优先级顺序

优先级顺序
运算符或表达式 说明
\ 转义符
()、(?:)、(?=)、[] 圆括号或方括号
*、+、?、{n}、{n,}、{n,m} 限定符
^、$、\b、\B 位置和顺序
| 选择符,“或”运算

上面优先级是从高到低排列。这些优先级顺序并不需要刻意去记忆,平常用得到了,自然而然就知道。

至此,正则表达式基础部分已经给大家分享完了。不过,对于正则的学习未完待续,过一段时间,等站长编写完了再给大家更新正则表达式进阶部分和应用部分,详细为大家介绍正则表达式进阶技巧和前端中的表单验证等各种技巧。

:本站所有教程均为原创,大部分已经与人民邮电出版社合作出版,禁止转载和抄袭,否则绿叶学习网和人民邮电出版社必将追究法律责任,附录:互联网著作权保护法。【法律顾问:张俊律师】

小伙伴们也可以加一下QQ群,在“群文件”中可以获取更多学习资源和配套资源,以及跟其他小伙伴交流,站长也在群内。

(1)QQ群:593173594(暗号:lvye

(2)绿叶学习网常见问题解答

回到顶部