1.概念
正则表达式是字符模式的对象、主要用来验证客户端的输入数据、。用户填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用Java 、PHP、等服务器脚本对其进行进一步处理。因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验
2、正则语法
2.1 创建正则
new
var box = new RegExp('box'); //第一个参数 字符串
var box = new RegExp('box', 'ig'); //第二个参数 可选模式修饰符
不要加引号
var box = /box/; //直接用两个反斜杠
var box = /box/ig; //在第二个斜杠后面加上模式修饰符
模式修饰符
2.2、测试正则表达式
示例
/*new创建正则· 运算符的test()示例*/
var pattern = new RegExp('box', 'i'); //创建正则模式,不区分大小写
var str = 'This is a Box!'; //字符串
alert(pattern.test(str)); //通过test()方法验证是否匹配
/*使用字面量方式的test 方法示例*/
var pattern = /box/i; //创建正则模式,不区分大小写
var str = 'This is a Box!';
alert(pattern.test(str));
/*一条语句实现正则匹配*/
alert(/box/i.test('This is a Box!'));
/*使用exec 返回匹配数组*/
var pattern = /box/i;
var str = 'This is a Box!';
alert(pattern.exec(str)); //匹配了返回数组,否则返回null
2.3 使用字符串的正则表达式方法
/*使用match()获取获取匹配数组*/
var pattern = /box/ig; //忽略大小写全局搜索
var str = 'This is a Box!,That is a Box too';
alert(str.match(pattern)); //匹配到两个Box,Box
alert(str.match(pattern).length); //获取数组的长度2
/*使用search()来查找匹配数据*/
var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.search(pattern)); //查找到返回位置,否则返回-1
//search(正则)查找到即返回,也就是说无需g 全局
/*replace()替换匹配到的数据*/
var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.replace(pattern, 'Tom')); //将Box 替换成了Tom
/*split()拆分成字符串数组*/
var pattern = / /ig;
var str = 'This is a Box!,That is a Box too';
alert(str.split(pattern)); //将空格拆开分组成数组
2.4 正则表达式元字符
常用元字符
常用限定符
常用反义词
元字符
**示例 **
<script>
window.onload = function () {
// 校验用户名必须是 4~12 位字母数字下划线的组合, 不能以数字开头
// [0-9]用\d表示 [a-zA-Z_0-9]用\w表示
var regex = /^[a-zA-Z]\w{3,11}$/;
var result = regex.test("Jack_xie");
if (result == true) {
alert("用户名可用.");
} else {
alert("请更换用户名.");
}
}
</script>
示例 表单验证
<body>
<form action="server" method="post" id="myform" onsubmit="return checkAll()">
<table class="main" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<img src="../img/logo.jpg" alt="logo" />
<img src="../img/banner.jpg" alt="banner" width="350px" />
</td>
</tr>
<tr>
<td class="hr_1">新用户注册</td>
</tr>
<tr>
<td style="height:10px;"></td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<!-- 长度为4~16个字符,并且以英文字母开头 -->
<td class="left">用户名:</td>
<td class="center">
<input id="user" name="user" type="text" class="in" onblur="checkUser()"/>
<span style="color: red" id="userInfo"></span>
</td>
</tr>
<tr>
<!-- 不能为空, 输入长度大于6个字符 -->
<td class="left">密码:</td>
<td class="center">
<input id="pwd" name="pwd" type="password" class="in" onblur="checkPassword()"/>
<span style="color: red" id="pwdInfo"></span>
</td>
</tr>
<tr>
<!-- 不能为空, 与密码相同 -->
<td class="left">确认密码:</td>
<td class="center">
<input id="repwd" name="repwd" type="password" class="in" onblur="checkRepassword()"/>
<span style="color: red" id="repwdInfo"></span>
</td>
</tr>
<tr>
<!-- 不能为空, 邮箱格式要正确 -->
<td class="left">电子邮箱:</td>
<td class="center">
<input id="email" name="email" type="text" class="in" onblur="checkMail()"/>
<span id="emailInfo" style="color: red;"></span>
</td>
</tr>
<tr>
<!-- 不能为空, 使用正则表达式自定义校验规则,1开头,11位全是数字 -->
<td class="left">手机号码:</td>
<td class="center">
<input id="mobile" name="mobile" type="text" class="in" onblur="checkMobile()"/>
<span id="mobileInfo" style="color: red;"></span>
</td>
</tr>
<tr>
<!-- 不能为空, 要正确的日期格式 -->
<td class="left">生日:</td>
<td class="center">
<input id="birth" name="birth" type="text" class="in" onblur="checkBirth()"/>
<span id="birthInfo" style="color: red;"></span>
</td>
</tr>
<tr>
<td class="left"> </td>
<td class="center">
<input type="image" src="../img/register.jpg" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
<script>
// 检查所有 : 控制了表单的提交事件
function checkAll() {
return checkUser() && checkMail() && checkPassword()
&& checkRepassword() && checkMobile() && checkBirth();
}
// 校验用户名
function checkUser() {
//长度为4~16个字符并以英文字母开头
var regex = /^[a-zA-Z]\w{3,15}$/;
return regexMethod(regex, "user");
}
// 校验密码
function checkPassword() {
var regex = /^[a-zA-Z0-9]{6,20}$/;
return regexMethod(regex, "pwd");
}
// 校验邮箱
function checkMail() {
//不能为空, 邮箱格式要正确
var regex = /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
return regexMethod(regex, "email");
}
// 校验重复密码
function checkRepassword() {
//获取两次密码的数值
var pwd = document.getElementById("pwd").value;
var repwd = document.getElementById("repwd").value;
//判断
if (pwd != repwd) {
document.getElementById("repwdInfo").innerHTML = "两次密码不一致";
return false;
}
document.getElementById("repwdInfo").innerHTML = "<img src='../img/gou.png' width='15px' />";
return true;
}
// 校验手机号码
function checkMobile() {
var regex = /^1[34578]\d{9}$/;
return regexMethod(regex, "mobile");
}
// 校验生日
function checkBirth() {
// 1988-09-01 ·2008-12-31
var regex = /^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/; // type=date
return regexMethod(regex, "birth");
}
//定义函数
function regexMethod(regex, name) {
var value = document.getElementById(name).value;
if (regex.test(value) == false) {
document.getElementById(name + "Info").innerHTML = "格式不正确!";
return false;
}
document.getElementById(name + "Info").innerHTML = "<img src='../img/gou.png' width='15px'/>";
return true;
}
</script>