<!DOCTYPE html>
<html lang="en">
<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>Document</title>
</head>
<body>
<!--
正则表达式
- 检测字符串的一组规则
- 作用1:主要用于表单验证 正则表达式.test(字符串)
- 作用2:处理复杂的字符串 正则表达式.exec(字符串) 字符串.match(正则)
正则表达式的声明
1. 字面量方式:/正则表达式/标志位
2. 构造函数方式:new RegExp('正则表达式','标志位')
正则表达式的方法
1. 正则表达式.test(字符串) : 检测字符串中是否包含了正则的内容,如果包含了,则返回true,否则,返回false.
2. 正则表达式.exec(字符串) : 将字符串中匹配到正则的内容以数组的方式返回。如果没有匹配的内容,返回null
处理正则表达式的字符串方法
1. 字符串.match(正则) : 将字符串中匹配到正则的内容以数组的方式返回。如果没有匹配的内容,返回null
2. 字符串.search(正则) : 与indexOf的功能相同,查找正则匹配的内容在父串中第一次出现的下标位置 ,如果没有找到,返回 -1
.exec(字符串)与.match(正则)的区别
一、exec不受g的影响,如果没有组,则只获取一个元素。如果有组,则获取一个父元素,n个子元素
二、
1. 无g无组,match只获取一个元素
2. 有g无组,match获取所有匹配的元素
3. 无g有组,match获取一个父元素,n个子元素
4. 有g有组,match获取所有的父元素。
正则表达式的元字符(三、三、二、三个一)
1. {}: 表示连续出现的次数
{m} : 表示{}前面的一个或一组字符连续出现 m 次
{m,} : 表示{}前面的一个或一组字符连续出现 m 至 无限次,至少出现m次
{m,n} : 表示{}前面的一个或一组字符连续出现 m 至 n次。
2. []: 表示取值范围
[\u4e00-\u9fa5]:匹配中文字符
3. (): 表示组
限定符1. * : {0,}
2. + : {1,}
3. ? : {0,1}
1. ^ : 写在正则表达式的开头,表示断头 ;写在[]的开头,表示取反
2. $ : 表示断尾,限制字符串的结尾必须是指定的字符
1. . : 表示任意一个字符(换行不算)
2. | : 表示或,一般结合组一起使用
3. \ : 表示转义符,将具有特殊含义的符号转为普通字符。
\d : 表示数字 [0-9]
\D : 表示非数字 [^0-9]
\w : 表示字母、数字、下划线 [a-zA-Z_]
\W : 表示 非(字母、数字、下划线)
\s : 表示空白:空格 缩进 换行
\S : 表示非空白
\b : 表示单词边界
\B : 表示非边界
\uxxxx : 以十六进制数 xxxx 规定的 Unicode 字符。
正则表达式的标志位
1. g : 全局匹配,匹配出所有的匹配项,并非在发现第一个匹配项时就立即停止
2. i : 不区分大小写字母
3. m: 表示多行模式(multiline),可以进行多行匹配,但是只有使用^和$模式时才起作用,
在其他模式中,加不加入m都可以进行多行匹配
-->
<script>
//用户名:
var reg = /^[\u4e00-\u9fa5]{2,}$/;
var str = '爱新觉罗州迪';
console.log(reg.test(str)); //true
var pattern = /good/ig;
var str = 'good good study!,day day up!';
alert(str.search(pattern));//0
//或一般与组一起使用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
console.log(/^男|女$/.test('男')); //true
console.log(/^男|女$/.test('女')); //true
console.log(/^男|女$/.test('男男')); //true
console.log(/^男|女$/.test('女男')); //false
console.log(/^(男|女)$/.test('男v')); //false
var pattern = /8(.*)8/;
var str = 'This is 8google8';
var result = str.replace(pattern,'<strong>$1<strong>');
document.write(result);
var pattern = /8(.*)8/;
var str = 'This is 8google8, dd 8ggg8';
alert(str.match(pattern)); //8google8, dd 8ggg8,google8, dd 8ggg
alert(RegExp.$1);//google8, dd 8ggg
</script>
<script>
//1. 无g无组的情况
var reg = /do/;
var str = 'how do you do';
console.log(reg.exec(str)); // ['do']
console.log(str.match(reg)); // ['do']
// g : 标志符 表示全局匹配(从头匹配到尾)
//2. 有g无组的情况
var reg = /do/g;
var str = 'how do you do';
console.log(reg.exec(str)); // ['do']
console.log(str.match(reg)); // ['do','do']
//3. 无g有组的情况
var reg = /([a-z]+) (\d+)/;
var str = 'hao 123';
// 第一个元素:是整个正则匹配到的内容 (父级元素)
// 第二个元素:是第一个组()匹配到的内容 (子级元素)
// 第三个元素:是第二个组()匹配到的内容 (子级元素)
console.log(reg.exec(str)); // ['hao 123', 'hao', '123']
console.log(str.match(reg)); // ['hao 123', 'hao', '123']
//4. 有g有组的情况
var reg = /([a-z]+) (\d+)/g;
var str = 'hao 123,huai 456';
// 第一个元素:是整个正则匹配到的内容 (父级元素)
// 第二个元素:是第一个组()匹配到的内容 (子级元素)
// 第三个元素:是第二个组()匹配到的内容 (子级元素)
console.log(reg.exec(str)); // ['hao 123', 'hao', '123']
console.log(str.match(reg)); // ['hao 123', 'huai 456']
//一、exec不受g的影响,如果没有组,则只获取一个元素。如果有组,则获取一个父元素,n个子元素
//二、
//1. 无g无组,match只获取一个元素
//2. 有g无组,match获取所有匹配的元素
//3. 无g有组,match获取一个父元素,n个子元素
//4. 有g有组,match获取所有的父元素。
</script>
</body>
</html>
js - 正则表达式
最新推荐文章于 2024-05-25 22:13:30 发布