JavaScript 的 RegExp 速查

创建 正则对象:

// 以下三种方法均可以
const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi;
let regex2 = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");
let regex3 = new RegExp("^[a-zA-Z]+[0-9]*\\W?_$", "gi");

正则表达式中的特殊字符:

修饰符描述
i不区分大小写搜索。
g全局搜索。
m多行搜索。
元字符描述例子
.匹配除换行符之外的任何单个字符/.n/将会匹配 "nay, an apple is on the tree" 中的 'an' 和 'on'
\

在非特殊字符之前的反斜杠表示下一个字符是特殊的;

反斜杠也可以将其后的特殊字符,转义为字面量。

如 /\bm/ 表示匹配一个非单词边界的m;

如 /a\*/ 表示匹配 "a*" 这样的字符串。

?使用 非贪婪模式对 "123abc" 应用 /\d+/ 将返回 "123",使用 /\d+?/ 返回 "1"
x|y或运算,匹配‘x’或者‘y’。/green|red/匹配“green apple”中的‘green’和“red apple”中的‘red’
^匹配输入的开始/^A/ 并不会匹配 "an A" 中的 'A',但是会匹配 "An E" 中的 'A'
$匹配输入的结束/t$/ 并不会匹配 "eater" 中的 't',但是会匹配 "eat" 中的 't'
\b匹配一个单词边界/\bm/匹配“a moon b”中得‘m’;/oo\b/并不匹配"moon"中得'oo'
\B匹配一个非单词边界/\B../匹配"noonday"中的'oo', 而/y\B../匹配"hi yesterday"中的’yes‘
\d匹配一个数字。等价于[0-9]。/\d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的'2'
\D匹配一个非数字/\D/ 或者 /[^0-9]/ 匹配"B2 is the suite number."中的'B'
\s匹配一个空白字符/\s\w*/ 匹配"foo bar."中的' bar'
\S匹配一个非空白字符/\S\w*/ 匹配"foo bar."中的'foo'
\w匹配一个单字字符(字母、数字或者下划线)。/\w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'
\W匹配一个非单字字符/\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'
\n匹配一个换行符。 
\t匹配一个水平制表符 
\v匹配一个垂直制表符 
\1

匹配第一个捕获括号的内容

"1" 可以换成其他大于0的证书。

看下方例子。
小括号描述例子
(xx)

匹配 'xx' 并且记住匹配项。被称为捕获括号

即,以括号内为整体,且存放用于之后操作。

模式/(foo) (bar) \1 \2/中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。

在正则表达式的替换环节,则要使用像 $1、$2、$n 这样的语法,例如,'bar foo'.replace( /(...) (...)/, '$2 $1' )。

(?:xx)

匹配 'x' 但是不记住匹配项。被称为非捕获括号

与上例子的唯一差别是不被"记住"。

表达式 /(?:foo){1,2}/ 匹配"fooAfoofooBfo"中的'foo'和'foofoo'。

注意, /foo{1,2}/,只对 ‘foo’ 的最后一个 ’o‘ 生效。

x(?=y)匹配'x'仅仅当'x'后面跟着'y'.这种叫做正向肯定查找/Jack(?=Sprat)/ 会匹配到 'JackSprat....'
x(?!y)匹配'x'仅仅当'x'后面不跟着'y',这个叫做正向否定查找/\d+(?!\.)/ 匹配到 "3.141" 中的 ‘141’ 但是不是 ‘3.141’
量词描述例子
+匹配前一个表达式1次或多次。等价于 {1,}。/bo+/会匹配 "A ghost boooed" 中的 'booo'
*匹配前一个表达式0次或多次。等价于 {0,}。/bo*/会匹配 "A ghost boooed" 中的 'booo' 和 "A bird" 中的 'b'

匹配前面一个表达式0次或者1次。等价于 {0,1}。

(紧跟在任何量词后面可作为非贪婪模式的用法)

/e?le?/ 匹配 "angel" 中的 'el',和 "angle" 中的 'le' 以及"oslo' 中的'l'
{n}匹配前面一个表达式n次。/a{2}/不会匹配“candy”中的'a',但是会匹配“caaandy”中的前两个'a'
{n,m}匹配前面一个表达式至少n次,最多m次。/a{1, 3}/会匹配“candy”中的a,也匹配“caaaandy”中的前三个a

更多可查看:W3school 或 MDN论坛 。还有,正则表达式在线测试


支持正则表达式的方法:

方法描述
exec一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。
test一个在字符串中测试是否匹配的RegExp方法,它返回true或false。
match一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
search一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
replace一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
split一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值