一、正则表达式
用某种模式去匹配一类字符串的公式。JavaScript中内置的对象。
应用:更简单的解决这些问题-->匹配(match)、查找(seach)、替换(replace)、判断字符串
创建正则对象:
1.构造函数方式:let reg = new RegExp("正则表达式")
2.字面量方式(隐式定义):let reg = /正则表达式/
常用方法:
test:正则.test(字符串) => true || false
search:字符串.search(正则) => 匹配成功的位置 || -1
match:字符串.match(正则) => 匹配成功的数组 || null
replace:字符串.replace(正则,"新字符串") => 替换后新字符串
exec:正则.exec(字符串) => 匹配成功的数组,index:表示第一个匹配的字符在原字符串中的位置,input:表示原字符串,groups:表示当初中命名的分组时匹配到的分组对象 || null
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正则介绍</title>
</head>
<body>
<script>
const str = "Dgfhfgh254bhku289fgdhdy675gfh"
// const reg = /\d+/g // \d+ -> +限定前面的\d数字出现1次或更多次
const reg = new RegExp("[0-9]+","g")
let arr = reg.test(str)
let arr1 = str.match(reg)
let arr2 = str.search(reg)
let arr3 = str.replace(reg,'*')
let arr4 = reg.exec(str)
console.log(arr) //true
console.log(arr1) //[ "254", "289", "675" ]
console.log(arr2) //7
console.log(arr3) //Dgfhfgh*bhku*fgdhdy*gfh
console.log(arr4) //[ "254" ]
</script>
</body>
</html>
二、常用元字符
元字符 | 说明 |
---|---|
\d | 匹配数字,相当于[0-9 |
\D | 匹配非数字,相当于[^0-9] |
\w | 匹配字母或数字或汉字或下划线 |
\W | 匹配任意不是字母、数字、汉字或下划线的字符 |
\s | 匹配任意的空白符,如空格、换行符、制表符等 |
\S | 匹配任意不是空白符的字符 |
.(点号) | 匹配除了换行符以外的任意字符 |
[...] | 匹配方括号中的所有字符 |
[^...] | 匹配非方括号中的所有字符 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>正则字符</title>
</head>
<body>
<script>
/*
写一个正则表达式,与给定的电话号码字符串匹配,判断是不是满足中国座机电话号
以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字。
*/
const phone1 = '128-1234567890'
const phone2 = '028-12345678'
const reg = /^0\d{2}-\d{8}$/ // 匹配座机电话模式 // 量词-限定符
// let isOk = reg.test(phone1) //false
let isOk = reg.test(phone2) //true
alert(isOk)
/*正则表达式匹配HTML标签中的<h1>、<h2>、<h3>、<h4>、<h5>和<h6>*/
var reg1 = /<h[123456]/
var tel = '<h6>标题元素</h6>'
let test = reg1.test(tel)
console.log(test) //true
</script>
</body>
</html>
三、连接符
连接符 “-”定义字符的范围。
[0-9] 匹配数字,等价于\d
[a-z] 匹配英文小写字母
[A-Z] 匹配英文大写字母
[0-9a-zA-Z] 匹配数字或英文字母
四、限定词-量词
+ | 重复一次或更多次 |
* | 重复0次或更多次(任意次数) |
? | 重复0次或1次(最多1次) |
{n} | 重复n次 |
{n,} | 重复n次或更多次(最少n次) |
{n,m} | 重复n到m次 |
五、定位符
定位符:限定某些字符出现的位置。
^ 限定开始位置的字符 例:^word
$ 限定结尾位置的字符 例:word$
\b 限定单词(字)便捷的字符
\B 限定非单词(字)边界的字符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>定位符</title>
</head>
<body>
<script>
function test1(){
const str = 'There once was a man from NewYork'
const reg = /[^T][NewYork$]/
const reg1 = /\bwas\b/
console.log(reg.test(str)) //true
console.log(str.match(reg1)) //[ "was" ]
}
test1()
</script>
</body>
</html>
六、修饰符
g:global全文搜索,不添加,搜索到第一个匹配停止
i:ignore case忽略大小写,默认大小写敏感
m:multiple lines多行搜索
七、正则特殊转义符
\. | 匹配. |
\f | 匹配换页符 |
\n | 匹配换行符 |
\r | 匹配回车符 |
\t | 匹配制表符 |
\v | 匹配垂直制表符 |
\\ | 匹配\ |
\" | 匹配 " |
\' | 匹配 ' |
Unix系统里,每行结尾只有“<换行>”,即”\n”;
Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即”\n”;
选择符“ | ”,或运算
正则工具网站:http://jsrun.net/