正则表达式
eval()
将字符串转换为js
表达式
使用对象方式创建正则表达式
let con = prompt("请输入要检测的内容,支持正则表达式");
let reg = new RegExp(con,"g");
let div=document.querySelector("div");
div.innerHTML = div.innerHTML.replace(reg,search=>{
return `<span style="color:red">${search}</span>`
})
选择符的使用
|
匹配两边的其中一个满足就可。与逻辑运算中的or功能相似。
正则表达式中的特殊字符
字符 | 含义 |
---|---|
\ |
在非特殊字符之爱情呢的反斜杠表示下一个字符是特殊字符。在特殊字符之前的反斜杠表示下一个字符不是特殊字符,应该按照字面理解。(作为转义字符) |
^ |
匹配输入的开始。如果多行标志被设置为true,那么也匹配换行符后紧跟的位置。 |
$ |
匹配输入的结束。如果多行标志被设置为true,那么也匹配换行符前的位置。 |
* |
匹配前一个表达式0次或多次。等价于{0,} 。 |
+ |
匹配前面一个表达式1次或者多次。等价于{1,} 。 |
? |
匹配前面一个表达式0此或者1次。等价于{0,1} 。如果紧跟在任何量词* 、+ 、? 、{} 的后面,将会使两次变成非贪婪(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。例如,对 “123abc “ 使用 /\d+/ 将会匹配 “123”,而使用 /\d+?/ 则只会匹配到 “1”。 |
. |
默认匹配除换行符之外的任何单个字符。 |
(x) |
它会匹配'x' 并且记住匹配项。其中括号被称为捕获括号。模式 /(foo) (bar) \1 \2/ 中的 ‘(foo) ‘ 和 ‘(bar) ‘ 匹配并记住字符串 “foo bar foo bar “ 中前两个单词。模式中的 \1 和 \2 表示第一个和第二个被捕获括号匹配的子字符串,即 foo 和 bar ,匹配了原字符串中的后两个单词。 |
(?:x) |
匹配'x' 但是不记住匹配项。这种括号叫做非捕获括号。 |
x(?=y) |
匹配'x' 仅当'x' 后面跟着'y' 。这种叫做先行断言。 |
(?<=y)x |
匹配'x' 仅当'x' 前面是'y' 。这种叫做后行断言。 |
x(?!y) |
仅仅当'x' 后面不跟着'y' 时匹配'x' 。这被称为正向否定查找。 |
(?<!y)x |
仅仅当'x' 前面不是'y' 时匹配'x' ,这被称为反向否定查找。 |
`x | y` |
{n} |
n是一个正整数,匹配了前面一个字符刚好出现了n次。 |
{n,} |
n是一个正整数,匹配前一个字符至少出现了n次 |
{n,m} |
n和m都是整数。匹配前面的字符至少n次,最多m次。如果n或者m的值是0,这个值被忽略。 |
[xyz] |
一个字符集合。匹配方括号中的任意字符,包括转义序列。可以使用破折号(-) 来指定一个字符范围。 |
[^xyz] |
一个反向字符集。它匹配任何没有包含在方括号中的字符。 |
[\b] |
匹配一个退格字符。 |
\b |
匹配一个词的便捷。一个词的便捷就是一个词不被另外一个”字”字符跟随的位置或者前面跟其他”字”字符的位置。 |
\B |
匹配一个非单词边界。匹配如下几种情况:1、字符串第一个字符为非”字”字符。2、字符串最后一个字符为非”字”字符。3、两个单词字符之间。3、两个非单词字符之间。4、空字符串。例如,/\B../匹配”noonday”中的’oo’, 而/y\B../匹配”possibly yesterday”中的’yes‘ |
\cX |
当X 出于A 到Z 之间的字符的时候,匹配字符串中的一个控制符。例如。/\cM/ 匹配字符串中的control-M 。 |
\d |
匹配一个数字。等价于[0-9] 。 |
\D |
匹配一个非数字字符。等价于[^0-9] |
\f |
匹配一个换页符。 |
\n |
匹配一个换行符。 |
\r |
匹配一个回车符。 |
\s |
匹配一个空白字符,包括空格、制表符、换页符和换行符。 |
\S |
匹配一个非空白字符。 |
\t |
匹配一个水平制表符。 |
\v |
匹配一个垂直制表符。 |
\w |
匹配一个单字字符(字母、数字或者下划线)。等价于[A-Za-z0-9] 。 |
\W |
匹配一个非单字字符。等价于[^A-Za-z0-9] 。 |
Escaping
如果需要使用任何特殊字符的字面值,必须通过在它勉强放一个反斜杠来转义。如/a\*b/
。
使用正则表达式
方法 | 描述 |
---|---|
exec |
一个在字符串中执行查找匹配的方法,它返回一个数组(未匹配到则返回null) |
test |
一个在字符串中测试是否匹配的方法,它返回true或者false |
match |
一个在字符串中执行查找匹配的String 方法,它返回一个数组,在未匹配到时会返回null。 |
matchAll |
一个在字符串中执行查找所有匹配的String 方法,它返回一个迭代器(iterator) |
search |
一个在字符串中测试匹配的String 方法,它返回匹配到的位置索引,或者在失败时返回-1。 |
replace |
一个在字符串中执行查找匹配的String 方法,并且使用替换字符串替换掉匹配到的子字符串。 |
split |
一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String 方法 |
通过标志进行高级搜索
正则表达式有六个可选参数(flags)允许全局和不分大小写搜索等。这些参数既可以单独使用也能以任意顺序一起使用,并且被包含在整表达式实例中。
标志 | 描述 |
---|---|
g |
全局搜索 |
i |
不区分大小写搜索 |
m |
多行搜索 |
s |
允许. 匹配换行符 |
u |
使用unicode 码的模式进行匹配 |
y |
执行“粘性(sticky) ”搜索,匹配从目标字符串的当前位置开始。 |
- 本文链接:https://archer-lan.github.io/2023/11/20/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。