javascript regex 正则表达式

正则表达式 虽然用的很少但每次用用的时候都是各种搜,然鹅找不到想要的,关键换是不了解各个符号的含义,有了这篇文章正则匹配不再求人。。。

正则表达式

虽然用的很少但每次用用的时候都是各种搜,然鹅找不到想要的,关键换是不了解各个符号的含义,有了这篇文章正则匹配不再求人。。。

正则表达式查找与模式匹配的字符串部分

JavaScript中,它们是在正斜杠之间//或使用new RegExp();可以预先定义正则表达式,也可以直接在调用方法时定义

 

const regexOne = /dpc/i
const regexTwo = new RegExp('808','g')

/dpc/i  ==> /.../(forward slashes) 正斜线  ,dpc(matching pattern) 模式匹配,i、g(optional flag(s)) 可选择的标志

匹配方式

const str = "dpc808" //
str.match(regexOne)        // "dpc" 匹配目标
str.match(regexTwo )       // "808" 匹配目标
str.replace(/r/, ‘D’)      // "Dpc808" 找到目标并替换
contains_r = /r/.test(str)   // true 检查目标返回true/false

匹配多个

str.match(/[psr]/)   // "p" []中捕获任何匹配的字符(g返回所有匹配)
str.match(/[a-e]/)   // "d" -连字号捕获一系列字符(g返回所有匹配)

可选标志

在正则表达式的末尾添加可选标志,以修改匹配器的工作方式。

i =不区分大小写 m =多行匹配 g =全局匹配(查找全部,而不是查找一个)

str.match(/8/g)     // "8" "8"  
str.match(/P/i)     // "p"  
str.match(/P/ig)     // "p"

 开始和结束

开始将匹配项组合在一起以匹配更长的字符串

str.match(/^d/)         // "d" “字符串开始” 第一个不是 d 返回 null
str.match(/[0-9]$/)       // "8" “字符串结尾” 最后一个不是 0-9中数字 返回 null
str.match(/^[a-z][a-z][a-z]/) // "dpc" 

通配符

使用通配符和特殊的转义字符来匹配较大类的字符

.  =除换行符外的任何字符

\ d =数字 \ D =不是数字

\ s =空格 \ S =任何非空白 \ n新行

str.match(/^d/)           // "d" “字符串开始” 第一个不是 d 返回 null
str.match(/[0-9]$/)         // "8" “字符串结尾” 最后一个不是 0-9中数字 返回 null
str.match(/^[a-z][a-z][a-z]/)  // "dpc" 

特定数量

* = 匹配前面的子表达式零次或多次

+ = 1或 n 次

? = 0或1

{3} =正好3倍

{2,4} =两倍,三倍或四倍

{2,} =两倍或更多倍

str.match(/^d/)           // "d" “字符串开始” 第一个不是 d 返回 null
str.match(/[0-9]$/)         // "8" “字符串结尾” 最后一个不是 0-9中数字 返回 null
str.match(/^[a-z][a-z][a-z]/)  // "dpc" 

小括号匹配组

使用 parens()捕获组

match会返回完整匹配加上组,除非您使用g标志

使用管道运算符 | 在parens()内部以指定该组匹配的内容| =或

str.match(/^d/)         // "d" “字符串开始” 第一个不是 d 返回 null
str.match(/[0-9]$/)       // "8" “字符串结尾” 最后一个不是 0-9中数字 返回 null
str.match(/^[a-z][a-z][a-z]/) // "dpc" 

反斜杠

str1 = "function(param1) { console.log('testing!!')}"

要匹配特殊字符,请使用反斜杠\

JS正则表达式中的特殊字符是:^ $ \。 * +? ()[] {} |

因此,要匹配一个星号,可以使用:\ *不只是*

str1.match(/\(.*\)/)       //["(param1){ console.log("testing!!")"]
str1.match(/\([a-zA-Z0-9]\)/)  // ["(param1)"]

中括号里的^

当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合

str1.match(/\([^0-9\)]*\)/g) // ["('testing!!')"] (param1)有数字 1 所以不满足