1 正则表达式的概念
正则表达式:用于匹配规律规则的表达式,正则表达式最初是科学家对人类神经系统的工作原理的早期研究,现在在编程语言中有广泛的应用。
正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
2 正则表达式的作用
1. 给定的字符串是否符合正则表达式的过滤逻辑(匹配)
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)
3. 强大的字符串替换能力(替换)
2 创建正则的方法
1 字面量
var reg = /表达式/修饰符
2 构造函数
var reg = new RegExp("表达式","修饰符");
3 正则中的各种符号
1 常用正则元字符介绍
元字符 | 说明 |
---|
\d | 匹配数字 |
\D | 匹配任意非数字的字符 |
\w | 匹配字母或数字或下划线 |
\W | 匹配任意不是字母,数字,下划线 |
\s | 匹配任意的空白符 |
\S | 匹配任意不是空白符的字符 |
. | 匹配除换行符以外的任意单个字符 |
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本(以谁结束) |
其它
[] 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思
[^] 匹配除中括号以内的内容
\ 转义符
| 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱
() 从两个直接量中选择一个,分组
2 常用正则量词介绍
限定符
限定符 | 说明 |
---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
小练习:
console.log(/\d/.test("998"));
console.log(/\d*/.test("998"));
console.log(/\d+/.test("998"));
console.log(/\d{0,}/.test("998"));
console.log(/\d{2,3}/.test("998"));
console.log(/\D/.test("eat"));
console.log(/\s/.test(" "));
console.log(/\S/.test("嘎嘎"));
console.log(/\w/.test("_"));
console.log(/\W/.test("_"));
4 简单的表单验证
简单的表单验证
1.只能是中文 长度为2-7位
/^([\u4e00-\u9fa5]){2,7}$/
2.长度为8到18位的小写大写字母或数字或下划线
/^[a-zA-Z0-9_]{6,10}$/
3.正确的邮箱格式
/^[A-Za-z0-9_]+@[a-zA-Z0-9_-]+\.[a-z]{2,3}$/
4.正确的手机号
/^1(3|4|5|7|8)\d{9}$/
5.正确的身份证号:
/^\d{15}|\d{17}([0-9]|x)/
/^[1-9][0-9]{16}[0-9x]$/
6.正确的qq号
/[1-9][0-9]{4,}/
7.正确的电话号码格式
/^0[0-9]{2}-[0-9]{8}|0[0-9]{3}-[0-9]{7}$/
8. 过滤空白
/ /g
9. 过滤首尾空格
str.trim()
10. 匹配任意8-18之间的大小写字母数字构成的密码
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,18}$/
1 输入用户名密码等正则验证,以及错误提示
案例:表单验证
QQ号:<input type="text" id="txtQQ"><span></span><br>
邮箱:<input type="text" id="txtEMail"><span></span><br>
手机:<input type="text" id="txtPhone"><span></span><br>
生日:<input type="text" id="txtBirthday"><span></span><br>
姓名:<input type="text" id="txtName"><span></span><br>
var txtQQ = document.getElementById("txtQQ");
var txtEMail = document.getElementById("txtEMail");
var txtPhone = document.getElementById("txtPhone");
var txtBirthday = document.getElementById("txtBirthday");
var txtName = document.getElementById("txtName");
txtQQ.onblur = function () {
var span = this.nextElementSibling;
var reg = /^\d{5,12}$/;
if(!reg.test(this.value) ){
span.innerText = "请输入正确的QQ号";
span.style.color = "red";
}else{
span.innerText = "";
span.style.color = "";
}
};
txtEMail.onblur = function () {
var span = this.nextElementSibling;
var reg = /^\w+@\w+\.\w+(\.\w+)?$/;
if(!reg.test(this.value) ){
span.innerText = "请输入正确的EMail地址";
span.style.color = "red";
}else{
span.innerText = "";
span.style.color = "";
}
};