正则表达式
修饰符
g/i/m/y/u
g => 全局查找 从上一次匹配的位置继续寻找直到找到匹配的位置开始,不一定是第一个就匹配上
i => 大小写不敏感
m => 检测字符串中的换行符
y => es6 全局查找 但是 必须是匹配成后紧跟着的第一个字符就要匹配成功才算
u => 用来处理Unicode字符的 大于两个字符(0xffff) .不匹配/量词(大于0xffff)/u{61}(这种Unicode字符)
方法
RegExp
compile => 编译正则表达式
exec => 搜索字符串中指定的值。返回找到的值,并确定其位置
test => 搜索字符串中指定的值。返回true或false
String
search => 搜索与正则表达式相匹配的值,stringObject 中第一个与 regexp 相匹配的子串的起始位置。注释:如果没有找到任何匹配的子串,则返回 -1。
match => 找到一个或者多个正则表达式的匹配。 返回的是匹配的值,没有 为 null
replace => 替换与正则表达式匹配的子串。
split => string ==> []
元字符
w => 查找字符单词 W => 查找非单词字符
d => 查找数字 D => 查找非数字字符
s => 查找空白字符 S => 查找非空白字符
b => 匹配单词边界 B => 匹配非单词边界
[] => 用于查找某个范围内的字符
{} => 量词
^ => 字符串的开始位置
$ => 字符串的结束位置
* => {0,}
+ => {1,}
? => {0,1}
用到过的正则例子
1. 邮箱验证 xx@xx.com/cn;
var s = '1205562160@qq.com';
var reg = new RegExp(/\d{5,11}@\w{2,3}\.com|cn/);
reg.test(s);
2. trim
function trim(s){
return s.replace(/(^\s*)|(\s*$)/g,'');
}
3. 去掉重复的字符串
var str = 'aaabccddde';
str = str.replace(/(.)\1+/g,'$1');
4. 验证注册名称 字母开头,后面数字、字符串、下划线,长度为9-20;
var s = 'a2323_wewwe';
var reg = new RegExp(/^[a-zA-Z][\w]{8-19}$/,'g');
reg.test(s);
5. 数字每三位数添加逗号
var num = 1233445454.12;
num.toString().replace(/(\d)(?=(\d{3})+\.)/g,function($2){
return $2+',';
})