彻底理解正则表达式

Posted zhouyanlife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了彻底理解正则表达式相关的知识,希望对你有一定的参考价值。

正则表达式

一、声明有两种方式:

  1、内置对象创建, 2、字面量创建

 

二、正则表达式的组成

  由一些普通字符和元字符组成,普通字符就是字母和数字,元字符是具有特殊意义的字符

 

三、正则表达式五大内部类:(只要有一个字符满足条件,就是true)

(1)预定义类:(通配,数字字符,单词字符,空白字符)

 技术分享图片

 

(2)简单内部类

/sjdfi/ 必须是完整的包含指定字符,可以多,但不能少

/[suej]/  只要满足中括号中的一个就可以

 

(3)负向类

/[^abc]/ 取反,^符号在[]中,用来检测的字符串数量不够或者刚刚好满足其中一个字符,返回false。超出规定数量或者没有一个与指定字符相符,就是满足条件,返回true.

 

(4)范围类

规定一个范围进行检测

[a-z] [A-Z]  只要检测的值一个满足给定范围,返回true

 

(5)组合类

[a-zA-Z0-9$%*] 多个判定条件组合在一起

 

四、正则边界

/^abc/  ^ 以给定字符开头 (注意:在[]中括号中是取反,不在中括号中是以什么开头)

/zfg$/  $ 以给定字符结尾,

 

^和$在一起使用,表示精确匹配,必须是这个[^abc$];

/^\\w/  表示以字母,数字或者下划线开头的字符

/^\\w$/ 当有了前后的边界,只能匹配单个字符,要想匹配多个,就要用到量词。

 

五、正则量词(量词使用在前后都有边界的情况下,并且一个量词跟一个标准)

(1)* >=0  模板给定的字符可以出现一次或者多次,但不能出现其他字符

Var reg = /^a*$/;   a可以出现0次或者多次,不能出现其他任何字符

/^abc*$/ 这种情况,可以出现多次c,但ab只能出现一次,且出现顺序是 abccc,不能调换。要想每个字符都可以出现多次,那么每个字符后面都要跟上量词,并且顺序也不能换

/^a*b+c?$/  aaabbbbc;  true;  abcabc; false;

 

(2)+  >=1  给定字符至少出现一次

/^a+$/

 

(3)? 0||1  给定字符出现0次或者1次

/^z?$/; z只能出现0次或者1次

 

/^\\w+$/;  可以出现多次同样的字母,数字,下划线

/^[abc]+$/;  可以多次出现[abc]中的任意一个字符,但不能超出abc这三个字符的范围

 

(4){} 大括号中的数字限定模板字符出现的个数

/^[abc]{2}$/; 可以出现模板中的任意两个字符

/^abc{2}$/;  规定必须完整的出现abc,并且c出现量词(一个量词跟一个标准,没有任何包裹的字母都可以看成一个判定标准,/abc/这种形式属于简单内部类)

 

(5){2,} 出现大于等于2次

/^\\w{3,}$/;   出现字母,数字,下划线的次数大于等于三次

/^ab{4,}c{2,}d$/  必须以这个顺序依次出现,b的次数要大于等于4次,c的次数要大于等于2,d最后一次出现结尾。

 

(6){2,5}  出现2次到5次(包括)

/^[a-zA-Z]{2,5}$/  a-z,A-Z这个范围类的字符出现2-5次(大于等于2,小于等于5)

 

(7)| 只能用在简单内部类且不带任何包裹的判定添加上(可以加括号)

/^abc|def$/;   满足abc开头或者def结尾的都可以

 

六、正则实例

(1)匹配手机号  var reg = /^1[3458]\\d{9}$/.

(2)匹配固定电话 var reg = /^(0\\d{2}[\\-]\\d{8})|(0\\d{3}[\\-]\\d{7})$/;

满足0开头,中间两位是0-9之间的数字,第三位是-(需要转义字符转义,否则即使[范围连接符]),最后8位是0-9的数字

(3)匹配qq号 var reg = /^[1-9][0-9]{4,10}$/

(4)匹配邮箱(注意,特殊字符需要转义)

var reg = /^[\\w\\-\\.]+\\@[\\w]+\\.[\\w]{2,4}$/

 

参考资料: w3c  善知堂教育http://www.itszt.com/

以上是关于彻底理解正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何彻底搞懂面向 Web 开发者的正则表达式?

对于正则表达式的理解

理解正则表达式的匹配关系

深入理解正则表达式

对正则表达式的简单理解

新手上路:图文解读助你理解和使用正则表达式