定义
JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串
构造函数
1
| var reg=new RegExp('<%[^%>]+%>','g');
|
字面量
- g: global,全文搜索,默认搜索到第一个结果接停止
- i: ingore case,忽略大小写,默认大小写敏感
- m: multiple lines,多行搜索(更改^ 和$的含义,使它们分别在任意一行对待行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配)
语法
[重要事项]正则表达式中不能出现多余空格
元字符
(14个):() [] {} \ ^ $ | ? * + .
[注意]元字符必须转义,即用\ 加转义字符,用new RegExp写的正则必须双重转义
转义字符
- .号代表除了换行符\n之外的任意字符
- \d 数字 \D 非数字
- \w 字母、数字、下划线 \W 非字母、数字、下划线
[注意]汉字不属于\w
- \s 空格 \S 非空格
- \b 边界符,\w的左侧或右侧不是\w,则会出现一个边界符 \B非边界符
- \1 表示和前面相同的一个字符
[tips]找出重复项最多的字符和个数
1 2 3 4 5 6 7 8 9 10 11
| var str = 'aaaaabbbbbdddddaaaaaaaffffffffffffffffffgggggcccccce'; var pattern = /(\w)\1+/g; var maxLength = 0; var maxValue = ''; var result = str.replace(pattern,function(match,match1,pos,originalText){ if(match.length > maxLength){ maxLength = match.length; maxValue = match1; }) console.log(maxLength,maxValue);
|
控制符号
- (red|blue|green) 查找任何指定的选项
- [abc] 查找方括号之间的任何字符
- [^abc] 查找任何不在方括号之间的字符
- [0-9] 查找任何从0到9的数字
- [a-z] 查找任何从小写a到小写z的字符
- [A-Z] 查找任何从大写A到大写Z的字符
- [A-z] 查找任何从大写A到小写z的字符
- [adgk] 查找给定集合内的任何字符
- [^adgk] 查找给定集合外的任何字
常见实例
两种方法找出字符串中所有的数字
用传统字符串操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var str1 = 'j1h342jg24g234j 3g24j1'; var array = []; var temp = ''; for(var i = 0; i < str1.length; i++){ var value = parseInt(str1.charAt(i)); if(!isNaN(value)){ temp += str1.charAt(i); }else{ if(temp != ''){ array.push(temp); temp = ''; } } } if(temp != ''){ array.push(temp); temp = ''; } console.log(array);
|
用正则表达式完成
1 2 3
| var str1 = 'j1h342jg24g234j 3g24j1'; array = str1.match(/\d+/g); console.log(array);
|
敏感词过滤(replace回调函数的应用)
1 2 3 4 5 6 7 8 9 10
| var string = 'FLG是邪教'; var pattern = /FLG|邪教/g; var result = string.replace(pattern,function($0){ var s = ''; for(var i = 0; i < $0.length; i++){ s+= '*'; } return s; }) console.log(result);
|
日期格式化
1 2 3 4 5 6 7 8 9
| var array = ['2015.7.28','2015-7-28','2015/7/28','2015.7-28','2015-7.28','2015/7---28']; function formatDate(date){ return date.replace(/(\d+)\D+(\d+)\D+(\d+)/,'$1'+'年'+'$2'+'月'+'$3'+'日') } var result = []; for(var i = 0 ; i < array.length; i++){ result.push(formatDate(array[i])); } console.log(result);
|
获取网页中的文本内容
1 2 3
| var str = '<p>refds</p><p>fasdf</p>' var pattern = /<[^<>]+>/g; console.log(str.replace(pattern,''));
|
去除首尾空格的trim()兼容写法
1 2
| var string = ' my name is littlematch '; console.log(string.replace(/^\s+|\s+$/,''));
|
JavaScript 正则表达式上——基本语法
javascript中的正则表达式使用详解
我所认识的JavaScript正则表达式
正则表达式
JavaScript正则表达式