1、正则表达式的使用方法
(1)使用test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
var str = '我今年18岁'
var reg = new RegExp("[0-9]{2}","g")
reg.test(str) // true
(2)使用match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
var str = '我今年18岁'
var reg = new RegExp("[0-9]{2}","g")
str.match(reg) // ["18"]
(3)使用search() 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置;没有检索字符串中指定的子字符串,就会返回-1
var str = '我今年18岁'
var reg = new RegExp("[0-9]{2}","g")
str.search(reg) // 3
(4)使用replace() 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
var str = '我今年18岁'
var reg = /[0-9]{2}/g
str.replace(reg,"aaa") // 我今年aaa岁
(5)使用split() 用于把一个字符串分割成字符串数组
var str = '我今年18岁'
var reg = /[0-9]{2}/g
str.split(reg) // ["我今年", "岁"]
(6)使用exec() 方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
var str = '我今年18岁'
var reg = /[0-9]{2}/g
reg.exec(str) // ["18"]
2、正则表达式的函数使用
(1)是否带有小数
function isDecimal(strValue ) {
var objRegExp= /^\d+\.\d+$/;
return objRegExp.test(strValue);
}
(2)校验是否中文名称组成
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
(3)校验是否全由8位数字组成
function isStudentNo(str) {
var reg=/^[0-9]{8}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
(4)校验电话码格式
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
return reg.test(str);
}
(5)校验邮件地址是否合法
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
(6)判断输入字符串是否为数字、字母、下划线组成
function isValid(str) {
return /^\w+$/.test(str);
}
(7)判断输入字符串是否全部为字母
function isletter (val){
return /^[a-zA-Z]+$/.test(val)
}
(8) 判断输入字符串是否全部为数字
function isnum(val){
return /^\d+$/.test(val);
}
(9)判断密码的强中弱
function checkUserpwd(pwd1, pwd2, reg, errSpan, errSpanInfo) {
if (pwd1 == pwd2) {
if (reg.test(pwd1)) {//表示合法
//合法里面 我们看强中弱
var numCount = (/[0-9]/g).test(pwd1) ? 1 : 0;
var lowCount = (/[a-z]/g).test(pwd1) ? 1 : 0;
var uppCount = (/[A-Z]/g).test(pwd2) ? 1 : 0;
switch (numCount + lowCount + uppCount) {
case 3:
errSpan.innerHTML = "强";
break;
case 2:
errSpan.innerHTML = "中";
break;
default:
errSpan.innerHTML = "弱";
break;
}
return true;
} else {
errSpan.style.color = "red";
errSpan.innerHTML = errSpanInfo;
return false;
}
} else {
errSpan.style.color = "red";
errSpan.innerHTML = "两次输入的密码不相等";
return false;
}
}
(10)过滤骂人的文字
function check(value){
var reg = /(马化腾)|(sb)|(jb)/ig;
//过滤骂人文字
//value.replace(reg,"*");
if(reg.test(value)){
alert("含有非法字符")
}
}
3、举例说明
<body>
用户:<input type="text" id="username" placeholder="请以字母_$开头的6-10位"><span id="username_span"></span><br>
<button id="btn">注册</button>
</body>
<script>
var usernameInput = document.getElementById("username");
var usernameSpan = document.getElementById("username_span");
var btn = document.getElementById("btn");
btn.onclick = function() {
var username = usernameInput.value;
var reg = /^[a-z_$][a-z0-9_$]{5,9}$/gi;
if (reg.test(username)) {
usernameSpan.innerHTML = "√";
usernameSpan.style.color = "green";
} else {
usernameSpan.innerHTML = usernameInput.getAttribute("placeholder");
usernameSpan.style.color = "red";
}
}
</script>