JS——正则表达式

正则表达式

正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换。

作用:正则表达式是专门用来处理字符串的

  1. 可以从字符串中 查找 需要的 数据
  2. 可以从字符串中 获取 需要的 数据
  3. 可以从字符串中 替换 需要的 数据

正则表达式的定义

  1. 字面量定义
    /…/ 以 / 开头,以 / 结尾
let regex = /[abc]/;
  1. new RegExp 对象
let regex = new RegExp("[abc]");let regex = new RegExp(/[abc]/);

正则表达式的使用

test()方法
返回 一个 boolean 值, 代表 是否匹配。

let regex = /[abc]/;
var str = "qwerty";
console.log(regex.test(str));
//无匹配元素,所以结果为:false;

let regex1 = /[abc]/;
var str1 = "qawerty";
console.log(regex1.test(str1));
//有匹配元素,所以结果为:true;

exec()方法

let regex = /[abc]/;
var str = "qwerty";
console.log(regex.exec(str));

let regex1 = /[abc]/;
var str1 = "qawerty";
console.log(regex1.exec(str1));


无匹配元素返回:null;
反之则返回一个数组,数组中 存放 的是 正则 匹配的元素。

正则表达式的基本使用规则

  1. 不用[ ]包裹,如:abc,则表示匹配字符串 abc

  2. [ ] 中括号中可以写多个任意字符,代表只匹配一个字符
    [abc] : 代表 可以匹配 a , b , c 三个字母中的任意一个字符 ;
    [a-z] : 匹配 小写 字母中的任意一个;
    [A-Z] : 匹配 大写 字母中的任意一个;
    [A-Za-z] : 匹配 所有的 字母中的任意一个;
    [0-9] : 匹配 任意一个 数字;

  3. [^] : 如果 中括号 中, 以 ^ 开头, 代表 非
    如:[^0-9] : 匹配 非数字中的任意一个字符;

  4. 元字符

元字符描述
\d匹配任意一个 数字, 等价于 [0-9]
\D匹配 非数字中的任意一个字符 等价于 [^0-9]
\w匹配 字母、数字、和下划线 中的任意一个字符串 等价于 [a-zA-Z0-9_]
\W等价于 [^a-zA-Z0-9_]
\s匹配一个空白字符 (空格 和 Tab制表符产生的空白
\S匹配 任意一个非空白字符
.匹配 除 换行符 之外的所有 任意一个 字符
\ .匹配一个 点

匹配多个元素

1.{}表示

字符描述
{n}n 是一个非负整数。匹配确定 n 次 例如。‘a{2}’ 不能匹配 “abc” 中的 ‘a’,但是能匹配 “aabc” 中的两个 a。
{n,}n 是一个非负整数。至少匹配n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 例如,“o{1,3}” 将匹配 “fooooood” 中的前三个 o。请注意在逗号和两个数之间不能有空格。

2.贪婪式表达式

字符描述
*匹配前面表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的表达式至少一次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
匹配前面的表达式零次或一次。

3.非贪婪式表达式
在贪婪式表达式后 添加一个 ‘?’

4.特殊字符

字符描述
^如果出现在正则的第一个位置,则代表 以 … 开头
$如果出现在正则的尾部,代表 以 … 结尾
()标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \ ( 和 \ )。
|或。要匹配

5 . 引用
\n : 引用第 n 组的匹配的内容 , n 从 1 开始

let regex = /(a)(.*)\1/;
var str = "aqwaerty";
console.log("结果:",regex.exec(str));

在这里插入图片描述
6.命名捕获组
(?< key >\d+) : 将 \d+ 匹配的内容 赋值给 key, 可以通过 exec().groups 来进行获取

7 . 非捕获组匹配
?: famil(?:y|ies) 此时的 小括号 不能算作 分组;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值