珠峰培训

正则的初级使用,体会正则的魅力

作者:

2016-08-07 22:25:56

201

正则

正则就是一种规则,用来处理字符串

1.判断一个字符串是否符合制定规则 test 匹配

2.把字符串中符合正则的内容捕获到 exec 捕获

1 、创建正则的方式

1.字面量方式

var reg = /\d/;

2.实例创建

var reg = new RegExp("\d");

这两种创建方式的区别的

console.dir(RegExp.prototype);
var reg = /\d/;  //包含一个0-9的数字
reg.test(str)

2 、元字符

每一个正则表达式都是由元字符和修饰符组成的

元字符:在两个斜杠之间有意义的字符就是元字符

修饰符:全局匹配g,不区分大小写i,行首行尾m

3、 特殊意义字符

\ :转义字符,转义后边字符所代表的含义

^ :以某个元字符开始

$ :以某个元字符结尾

^和$并不占位,当同时出现时就表示一个字符

\n:匹配一个换行符

. :除了\n以外的任意字符

var reg = /^0.2$/;
//以0开头,以2结尾,中间为除了\n的任意字符

若想只表示0.2则需要对元字符进行转义

var reg = /^0\.2$/;

():分组,把一个大正则划分为几个小正则

[xyz]:x,y,z中的一个

[^xyz]:除了xyz以外的任意字符

x|y:x或y中的一个

[a-z]:包含a-z之间的任何一个字符

[^a-z]:除了a-z之间的任何一个字符

\d:0-9之间的数字

\D:除了0-9之间的数字,以外的任意字符

\b:一个边界符

\w:数字、字母、下划线中的任意字符 等价于[0-9a-zA-Z_]

\s:匹配一个空白字符 如:空格,制表符(tab键),换页符

4 、出现次数的量词元字符

“*” :出现0到多次

“+” :出现1到多次

“?” :出现0或1次

{n}:出现n次

{n,}:出现n到多次

{n,m}:出现n到m次

5 、简单的手机号验证

有效数字验证:

[]中出现的所有字符都是代表本身意义的字符,没有特殊含义

[]中不识别两位数

()分组的作用:能改变x|y的默认优先级

var reg = /^18|19$/;
var reg2 = /^(18|19)$/;

6 、字面量创建和实例创建的区别

字面量方式中斜杠之间包含的所有内容都是元字符,不能进行变量拼接

var name = "abc";
var reg = /^\d+"+name+"\d+$/;
console.log(reg.test('2015"""nameee"2016'));

实例创建方式中包含的就是字符串

var name = "abc";
var reg = new RegExp("^\\d+"+name+"\\d+$");
console.log(reg.test("2015abc2016"));
//在字符串中需要对\进行转义

7 、正则实例

1.或者2-6或者8

var reg = /^[12-68]$/;

2.数字字母下划线和-

var reg = /^[\w-]$/;

3.匹配年龄18-65之间 分为18-19,20-59,60-65

var reg = /^(1[8-9]|[2-5]\d|6[0-5])$/;

4.匹配中国汉字姓名

var reg = /^[\u4e00-\u9fa5]{2,4}$/;

8 、正则的捕获exec

捕获的内容是一个数组[当前正则捕获到的内容为:index,捕获内容在字符串中起始索引;捕获的原始字符串]

若没有匹配到内容,则直接返回null

每一次捕获时都先进行默认匹配,如果没有匹配成功则返回null;只有有匹配的内容才能捕获到

var reg = /\d+/;
var str = "abcde2015fghijk2016";
var res = reg.exec(str);
console.log(res);