JavaScript 的正则表达式
1. 正则表达式的声明
/pattern/attributes
(推荐使用)new RegExp(pattern, attributes);
(不推荐,因为正则表达式中的特殊符号需要转义)
pattern
:正则表达式attributes
:正则表达式修饰符,可以不写。修饰符如下:i
:不区分大小写,匹配字符串时不区分大小写g
:全局匹配,匹配到一个之后不停止,匹配字符串的所有内容m
:多行匹配,匹配字符串的所有行的内容
- 例如:
<script>
let reg = /\d+/g;
let regExp = new RegExp("\\d+","g");
</script>
注意:第一种方式不能加双引号 “”,加上就变成字符串,而不是正则表达式对象了。
2. 正则表达式的常用方法
match()
- 语法:
RegExpObject.match(/正则表达式/)
- 是 string 提供的函数,传递的正则表达式,返回匹配的元素的字符串数组
- 语法:
test()
- 语法:
RegExpObject.test(string)
- 是 RegExp 对象提供的函数,传递的参数是被检验的字符串,如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false
- 语法:
3. 正则表达式匹配字符串
校验是否全由8位数字组成 /^[0-9]{8}$/
中文名称 /^[\u4E00-\u9FA5]{2,4}$/
是否带有小数 /^\d+\.\d+$/
验证身份证号 /\d{17}[\d|X]|\d{15}/
校验电话码格式 /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/
验证网址 /http(s)?:[//]{2}([\w-]+\.)+[\w-]+([/]{1}[\w- ./?%&=]*)?/
验证EMail /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
4. 正则表达式的案例
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>正则表达式</title>
</head>
<body>
<script>
//1.正则表达式的声明
let reg2 = /\d{3}/;//不需要转义符,推荐使用.创建一个正则表达式对象,匹配有三个数字
console.log(reg2.test("abc"));//false
console.log(reg2.test("123"));//true
let reg1 = new RegExp("\\d{3}");//需要转义符,不推荐使用.创建一个正则表达式对象,匹配 有三个数字
console.log(reg1.test("abc"));//false
console.log(reg1.test("123"));//true
//2.正则表达式的常用方法
let regi = /[amn]/i;//不区分大小写匹配amn
let resi = "ABC".match(regi);//从"ABC"中匹配regi模式字符串
console.log(resi);//[A]
let regg = /\d/g;//全局查找数字
let resg = "1 plus 2 equals 3".match(regg);
console.log(resg);//[1,2,3]
let regm = /^\d/m;//多行匹配开头的数字
let resm = "abc1 plus 2 equals 3\n6abcmnk".match(regm);
console.log(resm);//[6]
//3.正则表达式匹配字符串
let email = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;//创建一个正则表达式 对象,匹配邮箱格式
console.log(email.test("123abc"));//false
console.log(email.test("[email protected]"));//true
let phone = /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;//创建一个正则表达式,匹配电话号码
console.log(phone.test("123456"));//false
console.log(phone.test("18312312312"));//true
</script>
</body>
</html>
- Console: