正则表达式学习整理
/ :为定界符,要匹配的字符一般放在定界符里面;
2、 常用元字符
1)+:出现一次或多次
2)*:出现零次或多次
3)?:出现零次或一次
3、限定符
1) 字符1字符2{n} 表示字符2连续出现n次的匹配结果
字符1字符2{n,} 表示字符2连续出现n次或更多次的匹配结果
(字符1字符2){n} 表示字符1字符2连续出现n次的匹配结果
(字符1字符2){n,} 表示字符1字符2连续出现n次或更多次的匹配结果
字符1字符2{n,m} 表示字符2连续出现n到m次之间的匹配结果
示例:待匹配文本 abcabccabbcabccc
abc{1}表示c出现一次 abcabccabbcabccc
abc{2}表示c出现两次 abcabccabbcabccc
abc{1,}表示c出现一次或更多 abcabccabbcabccc
(abc){1,}表示abc出现一次或更多 abcabccabbcabccc
4.特殊重要的元字符
. 用于匹配除换行外任意字符
\s 用于匹配空格(小写)
\S 用于匹配非空格之外内容(大写)
\d 用于匹配数字
\D 用于匹配非数字
\w 用于匹配字母、数字或下划线
\W 用于匹配所有与\w不匹配字符
另外:
/g global可选标志,表示替换将针对行中每个匹配的,否则只替换第一个,如:we.abcdewe.,加上/g后,则可以匹配到两个we
常用场景:将字符串里面除了数字和小数点外,全部清除
1)第一步,全局匹配所有数字和小数点:/[^\d\.]/g
2)第二步,执行替换动作:.replace(/[^\d\.]/g,"")
组合起来就是:obj.value = obj.value.replace(/[^\d\.]/g,"");
/i case insensitive,区分大小写,如:we与wE不管
5、定位符
1)^ :目标字符串开头
1) $ :目标字符串结尾
示例:
规定开头格式且长度11位号码:/^1[3|4|5|8][0-9]\d{8}$/ //13、14、15、18开头,后面8位每位0-9之间都可以
1000-9999范围内数字判断:^([1-9]\d{3})$
2000-2077范围内数字判断:^20([0-6]\d|7[0-7])$ //需要注意的是十位个位:77可以拆分成两部分:十位0-6时,个位0-9;十位7时,个位0-7
^代表行输入开始匹配模式;
$代表输入的结尾匹配模式 其中数字代表原来的意思,有几位代表几位;
\d代表0-9其中的一位数字;
|是或者的意思,是选择条件;
()是分组,不分组就要成为分开匹配,把正则表达式分成几个小的正则了。
手机号码判断:
var mobile = $("#phone-number").val();
if (! (/^1[3|4|5|7|8][0-9]\d{8}$/.test(mobile))) {
layer.msg("请填写正确的手机号!", {
time:1000,
offset: top.top_nav_height + 'px'
});
$("#phone-number").focus();
$("#phone-number").select();
}
身份证判断:
//身份证:地址码(6位)+出生日期码(7-14位)+顺序码(3位)+校验码(1位)
technician.id_card = $(this).find(".card").val();
if($(this).find(".card").val() !=''){
var reg = /(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (!reg.test($(this).find(".card").val())) {
layer.tips("请输入正确的身份证号码", ".financialTable .phone",{time:1000});
flag = false;
eachflag = false;
return;
}
}