freeCodeCampFreecodecamp程序员

正则表达式RegExp

2017-03-29  本文已影响95人  德坤丨

正则表达式在许多编程语言中都具有重要得作用,学会立正则表达式对编程处理数据具有事半功倍的作用

正则表达式得模式修饰符

1.两种创建方式

var  box =   new RegExp("box","i");
var box =   /box/i;

2.RegExp对象的方法

使用 new 运算符的 test 方法示例

var pattern = new RegExp('box', 'i');
var str = 'This is a Box!';
alert(pattern.test(str));

使用字面量方式的 test 方法示例


var pattern = /box/i;
var str = 'This is a Box!';
alert(pattern.test(str));

使用一条语句实现正则匹配

alert(/box/i.test('This is a Box!')); //模式和字符串替换掉了两个变量

使用 exec 返回匹配数组

var pattern = /box/i;
var str = 'This is a Box!';
alert(pattern.exec(str)); //匹配了返回数组,否则返回 null

使用 match 方法获取获取匹配数组

var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.match(pattern));
alert(str.match(pattern).length);    //查找到返回位置,否则返回-1

PS:因为 search 方法查找到即返回,也就是说无需 g 全局

使用 search 来查找匹配数据

var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.search(pattern));

使用 replace 替换匹配到的数据

var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.replace(pattern, 'Tom'));   //将 Box 替换成了 Tom

使用 split 拆分成字符串数组

var pattern = / /ig;
var str = 'This is a Box!,That is a Box too';
alert(str.split(pattern));    //将空格拆开分组成数组

字符类

贪婪与惰性 即是在贪婪匹配符后面加?号

使用点元字符

var pattern = /g..gle/;
var str = 'google';
alert(pattern.test(str));

重复匹配

var pattern = /g.*gle/;
var str = 'google';
alert(pattern.test(str));

使用字符类匹配

var pattern = /g[a-zA-Z_]*gle/;
var str = 'google';
alert(pattern.test(str));

使用锚元字符匹配

var pattern = /^google$/;
var str = 'google';
alert(pattern.test(str));

/^从开头匹配,$从结尾开始匹配

var pattern = /goo\sgle/;
var str = 'goo gle';
alert(pattern.test(str)); //\s 可以匹配到空格
var pattern = /google\b/;
var str = 'google';
alert(pattern.test(str)); //\b 可以匹配是否到了边界

使用或模式匹配

var pattern = /google|baidu|bing/;
var str = 'google';
alert(pattern.test(str));

使用分组模式匹配

var pattern = /(google){4,8}/;
var str = 'googlegoogle';
alert(pattern.test(str));    //匹配分组里的字符串 4-8 次
var pattern = /8(.*)8/;     //获取 8..8 之间的任意字符
var str = 'This is 8google8';
str.match(pattern);
alert(RegExp.$1);           //获取 8..8 之间的任意字符

贪婪

var pattern = /8(.*)8/;
var str = 'This is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>');  //得到替换的字符串输出
document.write(result);
var pattern = /(.*)\s(.*)/;
var str = 'google baidu';
var result = str.replace(pattern, '$2 $1');  //将两个分组的值替换输出
document.write(result);

使用前瞻捕获

var pattern = /(goo(?=gle))/;            //goo 后面必须跟着 gle 才能捕获
var str = 'google';
alert(pattern.exec(str));

使用分组嵌套

var pattern = /(A?(B?(C?)))/;    //从外往内获取
var str = 'ABC';
alert(pattern.exec(str));  //abc,abc,bc,a

四.常用的正则
1.检查邮政编码

var pattern = /[1-9][0-9]{5}/;   //共 6 位数字,第一位不能为 0
var str = '224000';
alert(pattern.test(str));

2.检查文件压缩包

var pattern = /[\w]+\.zip|rar|gz/;    //\w 表示所有数字和字母加下划线
var str = '123.zip';                 //\.表示匹配.,后面是一个选择
alert(pattern.test(str));
//\w 表示所有数字和字母加下划线
//\.表示匹配.,后面是一个选择

3.删除多余空格

var pattern = /\s/g;
var str = '111 222 333';
var result = str.replace(pattern,'');  //把空格匹配成无空格
alert(result);

4.删除首尾空格

var pattern = /^\s+/;         //强制首
var str = 'goo gle '
var result = str.replace(pattern, '');
pattern = /\s+$/;            //强制尾
result = result.replace(pattern, '');
alert('|' + result + '|');

参考文档
javascriptMDN
李炎恢javascript高级教程

上一篇 下一篇

猜你喜欢

热点阅读