正则
正则表达式概述
-
什么是正则?
用于匹配字符串的一组规则。 -
正则的作用?
主要用于表单验证和解决一些复杂的字符串问题。
声明正则?
- 字面量: /正则表达式/标识位
- 构造函数: new RegExp(‘正则表达式’,‘标识位’)
正则的元字符(三三二 三个一)
-
三 : { } [ ] ( )
{ } : 表示限制一个或一组字符连续出现的次数
{m} : 表示一个或一组字符连续出现m次
{m,} : 表示一个或一组字符连续出先m 至 无限次
{m,n} : 表示一个或一组字符连续出现m 至 n 次[ ] : 表示范围
( ) :表示组
-
三: * + ?
* :表示 * 前一个或一组字符连续出现0 至 无限次 {0,}
+ : 表示 + 前一个或一组字符连续出现1 至 无线次 {1,}
?:表示 ? 前一个或一组字符连续出现0 至 1 次 {0,1} -
二 : ^(断头) $(断尾)
^ : 写在正则表达式的开头,表示必须以什么开头 写在[ ] 里的开头,表示取反 $ :必须以什么结尾
-
三个一 : . | \
. : 表示模糊匹配任意一个字符 | : 表示或结合组一起使用 \ : 转义符 \d :[0-9] 数字 \D :[^0-9] 非数字 \w : [a-zA-Z0-9_] 数字字母下划线 \W : [^a-zA-Z0-9_] 非数字字母下划线 \s : 表示空白 \S :表示非空白 \b :表示单词边界
正则的方法
- 正则表达式.test(字符串) : 判断字符串中是否包含了正则的内容,返回布尔值
- 正则表达式.exec(字符串) : 返回伪数组
处理正则的字符串方法
- 字符串.match(正则) : 返回伪数组
- 字符串.search(正则) : 类似于indexOf,查找正是匹配内容在字符串中第一次出现的下标位置,如果没有找到,返回 -1
- 区别
//1. 无g无组
var str = 'how do you do';
var re = /do/;
console.log(re.exec(str)); //['do']
console.log(str.match(re)); //['do']
//2. 有g无组 match 全部匹配
var str = 'how do you do';
var re = /do/g;
console.log(re.exec(str)); //['do']
console.log(str.match(re)); //['do','do']
//3. 有组无g 两个都是获取一个父级(整个正则匹配的内容)和多个子级(由组匹配的内容)
var str = 'zoo 2021';
var re = /([a-z]+) (\d+)/;
console.log(re.exec(str)); //["zoo 2021", "zoo", "2021"]
console.log(str.match(re)); //["zoo 2021", "zoo", "2021"]
//4. 有组有g match 获取所有的父级
var str = 'zoo 2021,too 2000';
var re = /([a-z]+) (\d+)/g;
console.log(re.exec(str)); //["zoo 2021", "zoo", "2021"]
console.log(str.match(re)); //["zoo 2021", "too 2000"]
标识位
1. i : 表示不区分大小写
2. g : 表示全局匹配