最近更新时间:2017年8月1日14:59:42
正则表达式,可以快速匹配无规律字符串,在常规开发工程中经常会用到,下面是一下经常用到的技术方案:
1、正则表达式校验:
手机号码:/^1(3|4|5|7|8)[0-9]\d{8}$/ || /^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])\d{8}$/
邮箱:/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
数字或字母组合:/^[0-9a-zA-z]*$/g
身份证号码:/^\d{15}|\d{18}}$/
if(!/^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])\d{8}$/.test(tel)){
//不是正确的11位手机号码
return;
}
if(!/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(email)){
//不是正确的邮箱地址
return;
}
2、正则对象
match()方法:
str="The rain in SPAIN stays mainly in the plain";
n=str.match(/ain/gi);//g全局匹配 i不区分大小写
match()方法的返回值n为一个字符串数组,n=["ain","AIN","ain","ain"];
\u**** 元字符,用于查找以十六进制数 xxxx 规定的 Unicode 字符。如果未找到匹配,则返回 null。
\u4e00-\u9fa5 匹配中文,这两个unicode值正好是Unicode表中的全部汉字的头和尾,代表了符合汉字GB18030规范的字符集。
至少匹配一个汉字的正则表达式:
[\u4e00-\u9fa5]+://"[]"表示可以匹配这个区间的任何值,“+”代表至少出现1次。
replace()方法:
name= name.replace(/[^a-zA-Z\u4E00-\u9FA5\u2006\u0027]/g,'').replace(/^\s+/g,'');//注册用户名校验
/[^a-zA-Z\u4E00-\u9FA5\u2006\u0027]/匹配26个英文字母大小写+全部汉子+2个iOS系统需要的特字符,以外的全部字符。
/^\s+/g全局匹配以空白字符(空格、制表、回车、换行、垂直换行、换页符)开始的一个或连续多个字符串,"+"表示匹配至少一个结果进行匹配,如:一个空格,或连续的多个空格
3、登陆校验实例
用户名:<input type="text" id="username"><br><br>
密码:<input type="password" id="userpassword">
用户名正则表达式:/^[A-Za-z0-9_\-\u4e00-\u9fa5]+$/
密码正则表达式:/[A-Za-z0-9_-]+$/
<script type="text/javascript">
var username=document.getElementById('username');
var userpassword=document.getElementById('userpassword');
username.οnchange=function(){
var reg1=/^[A-Za-z0-9_\-\u4e00-\u9fa5]+$/;
if(reg1.test(username.value)){
console.log("用户名是正则表达式");
}else{
console.log("请输入正则表达式");
}
};
userpassword.οnchange=function(){
var reg2=/[A-Za-z0-9_-]+$/;
if(reg2.test(userpassword.value)){
console.log("密码是正则表达式");
}else{
console.log("请输入正则表达式");
}
}
4、只支持输入 某些 字符,其它字符无法键入输入框
只支持汉子和英文:/[^a-zA-Z\u4E00-\u9FA5\uF900-\uFA2D]/g
$input.on('input propertychange',function(){
$(this).val($(this).val().replace(/[^a-zA-Z\u4E00-\u9FA5\uF900-\uFA2D]/g,''));
});
只支持数字:$(this).val($(this).val().replace(/[^\d]/g,''));
4、剔除HTML标签
剔除任何HTML标签的正则如下:结果只保留标签以外的全部内容
let reg = /<[^<>]+>/g;//以 < 开始,中间略过 < 或 > 以外的任何至少一个的字符,以 > 结尾,并且全局匹配
str.split(/<[^<>]+>/g) ;