正则表达式:其实就是一种匹配规则,用于检索字符串
定义正则表达式的两种方式: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>
区别只有下面这一点:
匹配的内容不同:
\d+:一个或多个数字。
\d*:0个或多个数字。
正则表达式:
一个描述字符规则的对象。可以用来检查一个字符串是否含有某个字符,将匹配的字符做替换或者从某个字符串中取出某个条件的子串等。
使用正则的原因:
前端往往有大量的表单数据校验工作,采用正则表达式会使得数据校验的工作量大大减轻。
扩展资料:
正则的创建方式:
1、构造函数方式
varreg1=newRegExp("a")
varstr="adassdfsd"
console.log(str.match(reg1))
2、字面量方式,古老的perl语言风格
varreg2=/a/
console.log(str2.match(reg2))
javascript中的正则表达式和java的正则表达式基本上是相同的,区别在于分组引用和对象,方法具体区别:
1).javascript正则表达式创建有两种方法:
a.显式创建:
var re = new RegExp("正则表达式模式串")
re.test(要校验或处理的源字符串)
b.隐式创建:
var re = /正则表达式模式串/
要校验或处理的源字符串.match(re)
2).分组捕获对象引用方式不同
javascript也是使用"()"进行分组,但是捕获对象用RegExp对象的$1到$99来引用捕获对象。
附录:常用的javascript正则表达式,java的也类似
ip地址校验正则表达式(IPv4):
/^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])(/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])){3}$/
Email校验正则表达式:
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(/.[a-zA-Z0-9_-]+)+$/
格式为:2010-10-08类型的日期格式校验正则表达式:
/^/d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]/d|3[0-1])$/
格式为:23:11:34类型的时间格式校验正则表达式:
/^([0-1]/d|2[0-3]):[0-5]/d:[0-5]/d$/
楼主结贴吧,查资料的时候看到的