JavaScript中的正则表达式

  • 正则表达式零起步
    • 创建正则表达式对象

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

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

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

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

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

  • 正则表达式初体验

①模式验证

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

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!

 

  • 匹配方式

①全文查找

如果不使用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