正则案例

使用点元字符

var pattern = /g..gle/; //.匹配一个任意字符

var str = 'google';

alert(pattern.test(str));

重复多次匹配

var pattern = /g.*gle/; //.匹配 0 到多个

var str = 'google'; //*,?,+,{n,m}

alert(pattern.test(str));

使用字符类匹配

var pattern = /g[a-zA-Z_]*gle/; //[a-z]*表示任意个 a-z 中的字符

var str = 'google';

alert(pattern.test(str));

 

var pattern = /g[^0-9]*gle/; //[^0-9]*表示任意个非 0-9 的字符

var str = 'google';

alert(pattern.test(str));

 

var pattern = /[a-z][A-Z]/; //[A-Z]+表示 A-Z 一次或多次

var str = 'gOOGLE';// gO识别出来

alert(pattern.test(str));

使用元符号匹配

var pattern = /g\w*gle/; //\w*匹配任意多个所有字母数字_

var str = 'google';

alert(pattern.test(str));

 

var pattern = /google\d*/; //\d*匹配任意多个数字

var str = 'google444';

alert(pattern.test(str));

 

var pattern = /\D{7,}/; //\D{7,}匹配至少 7 个非数字

var str = 'google8';

alert(pattern.test(str));

使用锚元字符匹配

var pattern = /^google$/; //^从开头匹配,$从结尾开始匹配

var str = 'google';

alert(pattern.test(str));

 

var pattern = /goo\sgle/; //\s 可以匹配到空格

var str = 'goo gle';

alert(pattern.test(str));

 

var pattern = /google\b/; //\b 可以匹配是否到了边界

var str = 'google';

var str2= 'googleaa googlexx google dsdddd';

alert(pattern.test(str));

使用或模式匹配

var pattern = /google|baidu|bing/; //匹配三种其中一种字符串

var str = 'google';

alert(pattern.test(str));

使用分组模式匹配

var pattern = /(google){4,8}/; //匹配分组里的字符串 4-8

var str = 'googlegoogle';

alert(pattern.test(str));

 

var pattern = /8(.*)8/; //获取 8..8 之间的任意字符

var str = 'This is 8google8, dd 8ggg8';

console.log(str.match(pattern));

//下标0指正则匹配出来的值,下标1指小括号分组匹配出来的值;

//如果加上全局参数g,分组里的值就取不出来

 

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);

使用 exec 返回数组

var pattern = /^[a-z]+\s[0-9]{4}$/i;

var str = 'google 2012';

alert(pattern.exec(str)); //返回整个字符串

        

var pattern = /^[a-z]+/i; //只匹配字母

var str = 'google 2012';

alert(pattern.exec(str)); //返回 google

 

var pattern = /^([a-z]+)\s([0-9]{4})$/i; //使用分组

var str = 'google 2012';

alert(pattern.exec(str)[0]); //google 2012

alert(pattern.exec(str)[1]); //google

alert(pattern.exec(str)[2]); //2012

捕获性分组

var pattern = /(\d+)([a-z])/; //捕获性分组

var str = '123abc';

console.log(pattern.exec(str));

非捕获性分组

//?=n 量词匹配任何其后紧接指定字符串 n 的字符串。

var str="Is this all there is";

var pattern=/is(?= all)/g;//对其后紧跟 "all" "is" 进行全局搜索

console.log( pattern.exec(str) );   // is this 中的 is

 

//?!n 量词匹配其后没有紧接指定字符串 n 的任何字符串。

var str="Is this all there is";

var pattern=/is(?! all)/gi;//对其后没有紧跟 "all" "is" 进行全局搜索

console.log( pattern.exec(str) );//Is

console.log( pattern.exec(str) );//is

使用分组嵌套

var pattern = /(A?(B?(C?)))/; //从外往内获取

var str = 'ABC';

console.log(pattern.exec(str));

使用特殊字符匹配

var pattern = /\.\[\/b\]/; //特殊字符,用\符号转义即可

var str = '.[/b]';

console.log(pattern.test(str));

使用换行模式

var pattern = /^\d+/mg; //启用了换行模式

var str = '1.baidu\n2.google\n3.bing';

var result = str.replace(pattern, '#');

alert(result);

邮政编码检测

// 6 位数字

/^\d{6}$/

文件格式检测

//xxx.zip\xxx.gz\xxx.rar

/^\w+\.(zip|gz|rar)$/

字符串首尾去空格

str = str.replace(/^\s+/,'');   //去掉左侧的空格

str = str.replace(/\s+$/,'');   //去掉右侧的空格

邮件格式检测

//xxxxx @ xxxx(.xxxx)

/^\w+@\w+(\.\w+)+$/

手机号检测

// 1开头的11位数字

/^13\d{9}$/

身份证检测

// 18位数字 17位数字加X

/^\d{17}(\d|X)$/

日期检测

// xxxx-xx-xx| xxxx/xx/xx | xxxx.xx.xx

/^(\d{2}|\d{4})[-\/\.]\d{2}[-\/\.]\d{2}$/

中文检测

// 把非中文替换为空

str.replace(/[^\u4e00-\u9fa5]/g,'')

用户名检测

// 账户名只能使用数字字母下划线,且数字不能开头,长度在6-15之间

/^[a-zA-Z_]\w{5,14}$/

字符串过滤

// 将所有的bagbegbigbog改为bug

str.replace(/(bag|beg|big|bog)/g,'bug')

posted @ 2017-08-31 18:30  烟雨任平生V  阅读(111)  评论(0编辑  收藏  举报