正则表达式:其实就是一种匹配规则,用于检索字符串
定义正则表达式的两种方式:1.直接定义 2.构造函数定义
那么正则表达式正则强大的地方是它可以写 通配符(拥有特殊含义的字符)
二. 通配符
\w 表示:字母、数字、下划线
\W 表示:除了字母、数字、下划线以外的字符
\d 表示:数字
\D 表示:非数字
^ 表示:以^符号后面的第一个字符开头
表示:以表示:以符号前面的第一个字符结尾
{n} 表示:重复n次
{n,m} 表示:重复n到m次
[xyz] 表示:其中任意一个字符
+ 表示:重复前一项1次或多次 等价于 {1,}
* 表示:重复前一项0次或多次 等价于 {0,}
? 表示:重复前一项0次或1次 等价于 {0,1}
. 表示:除了换行符以外的任意一个字符
\. 表示:.字符 ^ 表示:^ \表示:表示:
可以用()将多个字符作为一个整体
\w 等价于 [0-9a-zA-Z_]
| 表示:或者
[\u4E00-\u9FA5] 是常用汉字的unicode编码范围
三. 正则练习
四. 正则表达式配合字符串的方法
replace()方法
默认情况下,replace()方法,只会替换字符串中匹配的第一段内容
使用正则表达式,添加全局匹配修饰符g,可以替换匹配全部内容
使用正则表达式,添加忽略大小写修饰符i,在匹配内容时会忽略大小写
search()方法
可以通过正则表达式查找位置
五. 添加学生练习
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>添加学生</title>
<style>
.err{
color: red
}
.ok{
color: green
}
</style>
</head>
<body>
<form>
<table>
<tr>
<td>姓名:</td>
<td>
<input type="text" id="name">
<span id="nameMsg"></span>
</td>
</tr>
<tr>
<td>年龄:</td>
<td>
<input type="text" id="age">
<span id="ageMsg"></span>
</td>
</tr>
<tr>
<td>性别:</td>
<td>
<input checked name="sex" type="radio" value="0">男
<input name="sex" type="radio" value="1">女
</td>
</tr>
<tr>
<td>爱好:</td>
<td>
<input name="hobby" type="checkbox" value="抽烟">抽烟
<input name="hobby" type="checkbox" value="喝酒">喝酒
<input name="hobby" type="checkbox" value="烫头">烫头
<input name="hobby" type="checkbox" value="睡觉">睡觉
</td>
</tr>
<tr>
<td>年级:</td>
<td>
<select id="grade">
<option value="0">请选择</option>
<option value="1">大一</option>
<option value="2">大二</option>
<option value="3">大三</option>
<option value="4">大四</option>
</select>
<span id="gradeMsg">必须要选择一个年级</span>
</td>
</tr>
<tr>
<td>邮箱:</td>
<td>
<input type="text" id="email">
<span id="emailMsg">请输入正确的邮箱格式</span>
</td>
</tr>
<tr>
<td>电话:</td>
<td>
<input type="text" id="phone">
<span id="phoneMsg">请输入正确的电话格式</span>
</td>
</tr>
<tr>
<td>生日:</td>
<td>
<input type="text" id="bornDate">
<span id="bornDateMsg">请输入正确日期格式</span>
</td>
</tr>
<tr>
<td></td>
<td>
<button type="submit">提交</button>
<button type="reset">重置</button>
</td>
</tr>
</table>
</form>
<script>
//获取姓名文本框
let name = document.querySelector('#name')
//获取年龄文本框
let age = document.querySelector('#age')
//表单的提交事件
document.querySelector('form').onsubmit = function(){
// 返回true提交表单,返回false不提交表单
if(checkName() &checkAge()){
return true
}else{
return false
}
}
//姓名文本框失去焦点
name.onblur = checkName
//验证姓名
function checkName(){
//定义验证姓名的正则
let reg = /^[\u4E00-\u9FA5]{2,4}$/
// 调用验证方法
return checkInput("#nameMsg",name,reg,'姓名正确','姓名必须是2-4位汉字')
}
//年龄文本框失去焦点
age.onblur = checkAge
//验证年龄
function checkAge(){
//定义验证年龄的正则
let reg = /^\d{1,2}$|^1([0-1]\d)|20$/
// 调用验证方法
return checkInput("#ageMsg",age,reg,'年龄正确','年龄必须是0-120之间')
}
//验证方法,参数分别是:span元素Id,表单元素对象,正则规则,验证成功消息,验证失败消息
function checkInput(spanId,_this,reg,okMsg,errMsg){
// 获取消息span
let span = document.querySelector(spanId)
//获取信息
let val = _this.value
if(!reg.test(val)){
span.className="err"
span.innerHTML = errMsg
return false //验证失败返回false
}else{
span.className="ok"
span.innerHTML = okMsg
return true //验证成功返回true
}
}
</script>
</body>
</html>
正则表达式:/^1\d{10}$/
答案演示:
表达式意思解析:
(1)以1为开头;
(2)\d表示数字,\d{10}表示出现10次数字;
(3)$表示结尾,即匹配输入字符串的结尾位置;
(4)根据(1)、(2)、(3),正好表示11位数字
扩展资料:
更严格的电话号码校验正则表达式:
(1)/^1(3|4|5|7|8)\d{9}$/ ,这个表达式才是真正有效的电话号码的正则表达式,表示必须以1做开头,第二位可以是3,4,5,7,8,中的任意一位,后面9位数字可以是0-9任意数字。
身份证的校验正则表达式:
(1)(^\d{15}$)|(^\d{17}([0-9]|X)$),表示匹配15位或18位身份证,且可以匹配出以X结尾的身份证号码。
参考资料来源:百度百科-正则表达式