JavaScript学习笔记——正则

RegExp对象

RegExp对象表示正则表达式,他是对字符串执行模式匹配的强大工具

直接字面量语法

        var reg1 = /hello/i;
        console.log([reg1]);
        var str = "hello world";


        var result1 = str.match(reg1);
        console.log(result1);
        var result2 = reg1.test(str);
        console.log(result2);

在这里插入图片描述

创建RegExp对象的语法

new RegExp(pattern , attributes);

参数

pattern:

参数 pattern 是一个字符串,制定了正则表达式的模式或其他正则表达式

attributes:

参数 attributes 是一个可选的字符串,包含 “g”,“i” ,“m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。

如果pattern是正则表达式,而不是字符串,则必须省略该参数

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回pattern,而不再创建一个新的 RegExp 对象

        var reg2 = new RegExp("[ej]s","i");
        console.log([reg2]);
        var result3 = reg2.test("es");
        console.log(result3);

在这里插入图片描述

括号

方括号用于查找某个范围内的字符

表达式 描述
[abc] 查找方括号之内的任何字符
[^abc] 查找任何不在方括号之内的字符
[0-9] 查找从0到9的数字
[a-z] 查找任何从小写a到小写z的字符
[A-Z] 查找任何从大写A到大写Z的字符
[A-z] 查找任何从大写A带小写z的字符
[adgk] 查找给定集合内的任何字符
[^adgk] 查找给定集合外的任何字符
(red\blue\green) 查找任何制指定的选项

(上面 (red\blue\green) 替换为(red|blue|green),要不然博客无法正常显示)

元字符

元字符 ( Metacharacter ) 是拥有特殊含义的字符:

元字符 描述
. 查找单个字符,出来换行和行结束符
\w 查找字母、数字、下划线
\W 查找非字母、数字、下划线
\d 查找数字
\D 查找非数字字符
\s 查找空白字符
\S 查找非空白字符
\b \b匹配的是位置,而不是任意字符,匹配的是单词的边界
\B 匹配非单词边界
\0 查找NUL字符
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符
\v 查找垂直制表符
\xxx 查找以八进制数 xxx 制定的字符
\xdd 查找以十六进制数 dd 规定的字符
\uxxxx 查找以十六进制数 xxxx 制定的 Unicode 字符

量词

量词 描述
n+ 匹配任何包含至少一个 n 的字符串
n* 匹配任何包含零个或多个 n 的字符串
n? 匹配任何包含零个或一个 n 的字符串
n{X} 匹配包含 X 个 n 的序列的字符串
n{X,Y} 匹配包含X至 Y 个 n 的序列的字符串
n{X,} 匹配包含至少 X 个n的序列的字符串
n$ 匹配任何结尾为 n 的字符串
^n 匹配任何开头为 n 的字符串
?=n 匹配任何其后紧接指定字符串 n 的字符串
?!n 匹配任何其后没有紧接指定字符串 n 的字符串

RegExp对象属性

属性 描述
global RegExp 对象是否具有标志 g
ignoreCase RegExp 对象是否具有标志 i
lastIndex 一个整数,标志开始下一次匹配的字符位置
multiline RegExp 对象是否具有标志 m
source 正则表达式的源文本

在这里插入图片描述

RegExp对象方法

方法 描述
compile 编译正则表达式
exec 检索字符串中指定的值。返回找到的值,并确定其位置
test 检索字符串中制定的值。返回 true 或 false

支持正则表达式的 String 对象的方法

方法 描述
search 检索与正则表达式相匹配的值
match 找到一个或多个正则表达式的匹配
replace 替换与正则表达式匹配的子串
split 把字符串分割为字符串数组

声明词量

声明表示条件的意思。声明词量包括正向声明和反向声明两种模式

方法 描述
(?=pattern) 正向肯定预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反
(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反
windows(?=95 | 98 | NT | 2000)
//能匹配“windows2000”中的windows,但不能匹配“windows3.1”中的windows

windows(?!95 | 98 | NT | 2000)
//能匹配“windows3.1”中的windows,但不能匹配“windows2000”中的windows

(?<=95 | 98 | NT | 2000)windows
//能匹配“2000windows”中的windows,但不能匹配“3.1windows”中的windows

(?<!95 | 98 | NT | 2000)windows
//能匹配“3.1windows”中的windows,但不能匹配“2000windows”中的windows

猜你喜欢

转载自blog.csdn.net/Nozomi0609/article/details/108813091