js正则

Last Updated:

2022-08-12

JavaScript正则表达式在线测试工具 正则表达式在线生成工具

正则表达式修饰符

multiline(/m)用法

要有^或者$,/m修饰符才有作用。

global(/g)用法

在创建正则表达式对象时如果使用了“g”标识符或者设置它了的?global属性值为ture时,那么新创建的正则表达式对象将使用模式对要将要匹配的字符串进行全局匹配。在全局匹配模式下可以对指定要查找的字符串执行多次匹配。每次匹配使用当前正则对象的lastIndex属性的值作为在目标字符串中开 始查找的起始位置。lastIndex属性的初始值为0,找到匹配的项后lastIndex的值被重置为匹配内容的下一个字符在字符串中的位置索引,用来标识下次执行匹配时开始查找的位置。如果找不到匹配的项lastIndex的值会被设置为0。当没有设置正则对象的全局匹配标志时lastIndex属性的值始终为0,每次执行匹配仅查找字符串中第一个匹配的项。

var str =` "012345678901234567890123456789"

var re = /123/g;

console.log(re.lastIndex); //输出0,正则表达式刚开始创建

console.log(re.test(str)); //输出ture

console.log(re.lastIndex); //输出4

console.log(re.test(str)); //输出true

console.log(re.lastIndex); //输出14

console.log(re.test(str)); //输出ture

console.log(re.lastIndex); //输出24

console.log(re.test(str)); //输出false

console.log(re.lastIndex); //输出0,没有找到匹配项被重置

惰性匹配和贪婪匹配

懒匹配写法*?,对应*

alert(/abc([\w]*)/mg.exec("abc1abc2")[0]);//abc1abc2
alert(/abc([\w]*?)/mg.exec("abc1abc2")[0]);//abc

RegExp.test和RegExp.exec

test返回true或false;

exec返回数组。数组里是匹配到的字符串或null(没匹配到)

[\s\S]写法

\s 小写s

匹配空白字符;

\S 大写s

匹配非空白字符;

[\s\S]写法和.区别

.

匹配换行符以外的字符。

正则表达式 —— 非捕获元

正则表达式语法中,有一种称为”非捕获元“。是基于子表达式的语法规则;

例子 语法 释义
举例1 (pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到。
举例2 (?:pattern) 匹配 pattern 但不获取匹配结果。
举例3 (?=pattern) 正向肯定预查(look ahead positive assert)。这是一个非获取匹配。
举例4 (?!pattern) 正向否定预查(negative assert)。这是一个非获取匹配。
举例5 (?<=pattern) 反向(look behind)肯定预查,与正向肯定预查(?=pattern)类似,只是方向相反。这是一个非获取匹配。
举例6 (?<!pattern) 反向否定预查,与正向否定预查(?!pattern)类似,只是方向相反。这是一个非获取匹配。

举例3:正向 肯定

表达式: /win(?=1|2|3)/g

字符串: "win4win3win2"

共找到 2 处匹配: win win 能够匹配到win3 win2的win,不能匹配win4的win;

举例4:正向 否定

表达式: /win(?!1|2|3)/g

字符串: "win4win3win2"

共找到 1 处匹配: win 能够匹配到win4的win,不能匹配win2 win3的win;

举例5:反向 肯定

表达式: /(?<=1|2|3)win/g

字符串: "4win3win2win"

共找到 2 处匹配: win win 能够匹配到3win 2win的win,不能匹配4win的win;

举例6:反向 否定

表达式: /(?<!1|2|3)win/g

字符串: "4win3win2win"

共找到 1 处匹配: win 能够匹配到4win的win,不能匹配2win 3win的win;

匹配汉字、全角符号、半角符号

 汉字:^[\u4e00-\u9fa5]{0,}$    .匹配除 \n 以外的任何字符。

/[\u4E00-\u9FA5]/ 汉字

/[\uFF00-\uFFFF]/ 全角符号

/[\u0000-\u00FF]/ 半角符号