一、正则的使用方式
1. 用构造函数
var patt = new RegExp("b\.1a","ig");
2. 字面量
var patt = /b.1a/ig;
二、与正则相关的方法
1. patt.test(str) 返回布尔值
2. str.match(patt)
(1) 非全局匹配, 返回匹配到的字符串
(2) 全局匹配,返回匹配到的所有字符串
(3) 如果有反向引用,则返回匹配到的字符串,及反向引用中括号里面的规则匹配到的字符串
3. str.replace(patt,新值)
三、正则的简单模式
格式: /^[字符范围]{量词}[字符范围]{量词}[字符范围]{量词}$/
1. 字符范围(字符类)
(1) [a-z]
(2) [^a-z]
(3) 原义字符:/a/
(4) 预定义类 \d \D \w \W
2. 量词
'* + ? {n} {n,} {n,m}'
3.边界: \b \s ^ $
四、正则的复杂模式
1. 分组
/black{3}/ /(black){3}/
2. 反向引用
var str = "we123co34me";
var patt = /(([a-z])\d{2})\w{2}/;
'2: e'
3. 候选
/(red)|(black)/
4. 贪婪与惰性
/a{2,4}/ /a{2,4}?/
5. 前瞻
/bed(?=room)/ /bed(?!room)/
五、实例
demo1:
var str = 'abc dd uf w3';
var patt = /(\b\w+\b)/g;
var result =str.replace(patt,'8$18');
console.log(result);
//结果: 8abc8 8dd8 8uf8 8w38
demo2:
// 匹配中文字符的正则表达式:[\u4e00 - \u9fa5]
// 匹配双字节字符(包括汉字在内) :[^\x00 -\xff]
var str = '郑州有个abc少林寺 welcome';
var patt = /[\u4e00-\u9fa5]/g;
var result =str.match(patt);
console.log(result.length);
demo3:删除前后空格
var str = ' welcome ';
var patt = /^\s*(.*?)\s*$/;
var result =str.replace(patt,'$1');
console.log(result);
demo4:
var str = '印度好看的电影:《摔跤吧爸爸》,还有《神秘巨星》,《起跑线》';
var patt = /(《.+?》)/ig;
// console.log(str.match(patt));
var newStr = str.replace(patt,"<span style=\"color:red;\">$1</span>");
document.body.innerHTML = newStr;
demo5:
function getCookie(name){
// “card=12; c12=1234; card=12; user=qq; pw=123; card=1234”
// name = “card”
// /(^| )card=([^;]*)(;|$)/
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg)) {
return unescape(arr[2]);
} else {
return null;
}
getCookie("card");