正则表达式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 1.字面量形式
var reg = /abc/;
console.log(reg);
console.dir(reg);
// 2.构造函数创建
var reg2 = new RegExp(/abc/);
console.log(reg2);
</script>
</body>
</html>
匹配模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var reg = /abc/gi;
var str = "defAbcgabcAbcABC";
// test() 检测是否符合正则表达式的规则
// console.log(reg.test(str));
// console.log(reg.test(str));
// i 忽略大小写
// g 全局匹配
// exec() 有匹配的值,则返回匹配值,否则返回 null
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
</script>
</body>
</html>
边界符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var reg = /^abc$/gi;
var str = "abcabc";
console.log(reg.test(str)); // true
// 边界符 ^ 以谁开始 $ 以谁结束
// 当两者一块使用,则字符串必须于正则一致
</script>
</body>
</html>
中括号
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// [] 多选1
var reg = /[abcdefg]/gi;
var str = "_";
// console.log(reg.test(str));
// 取反
var reg = /[^a-zA-Z0-9]/gi;
console.log(reg.test(str));
</script>
</body>
</html>
量词符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// *出现0次或更多次
// +出现1次或更多次
// ?出现0次或1次
// {n}出现n次
// {n,}出现n次或更多次
// {n,m}出现n到m次
var reg = /^[a-z]{3,5}$/gi;
var str = "abcdefg";
console.log(reg.test(str));
</script>
</body>
</html>
元字符类
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// var reg = /[a-zA-Z0-9_]/
var reg = /\w/;
// 手机号输入规则
var phone = /^1[3|4|5|6|7|8|9][\d]{9}$/;
var str = "130888888888";
console.log(phone.test(str));
</script>
</body>
</html>
表单中的应用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text">
<img src="" alt="">
<script>
var input = document.getElementsByTagName("input")[0];
var img = document.getElementsByTagName("img")[0];
var phone = /^1[3|4|5|6|7|8|9][\d]{9}$/;
input.oninput = function () {
if(phone.test(input.value)){
img.src = "./shuruzhengque.png";
}else{
img.src = "./shurucuowu.png";
}
}
</script>
</body>
</html>
正则提取
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var str = "123123@qq.com,ziyuanyihe@163.cn 87666444@qq.com englishtown.com 222669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);
</script>
</body>
</html>
正则替换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// replace()
var str = "abc,efg,123,abc,123,a";
console.log(str.replace(/,/g, ","));
</script>
</body>
</html>