使用点元字符
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}$/
字符串过滤
// 将所有的bag、beg、big和bog改为bug
str.replace(/(bag|beg|big|bog)/g,'bug')