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 |