javascript里的正则表达式

定义

JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串

构造函数

1
var reg=new RegExp('<%[^%>]+%>','g');

字面量

1
var reg=/<%[^%>]%>/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);//18 "f"

控制符号

  • (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));//如果用number将无法排除空格
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正则表达式

文章目录
  1. 1. 定义
    1. 1.1. 构造函数
    2. 1.2. 字面量
  2. 2. 语法
    1. 2.1. 元字符
      1. 2.1.1. 转义字符
      2. 2.1.2. 控制符号
  3. 3. 常见实例
    1. 3.1. 两种方法找出字符串中所有的数字
      1. 3.1.1. 用传统字符串操作
      2. 3.1.2. 用正则表达式完成
    2. 3.2. 敏感词过滤(replace回调函数的应用)
    3. 3.3. 日期格式化
    4. 3.4. 获取网页中的文本内容
    5. 3.5. 去除首尾空格的trim()兼容写法
,