正则案例

使用点元字符

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 = /gw*gle/; //w*匹配任意多个所有字母数字_

var str = 'google';

alert(pattern.test(str));

 

var pattern = /googled*/; //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 = /goosgle/; //s 可以匹配到空格

var str = 'goo gle';

alert(pattern.test(str));

 

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

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 2.google 3.bing';

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

alert(result);

邮政编码检测

// 6 位数字

/^d{6}$/

文件格式检测

//xxx.zipxxx.gzxxx.rar

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

字符串首尾去空格

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

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

邮件格式检测

//xxxxx @ xxxx(.xxxx)

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

手机号检测

// 1开头的11位数字

/^13d{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')

原文地址:https://www.cnblogs.com/nbZzp/p/7459883.html