正则表达式学习笔记

正则表达式学习

符号含义
\转义字符,将带有意义的字符转变成单纯的字符串。如/a*/代表匹配0个或多个a,/a*/ 将’‘匹配0到多个的含义移除,只表示字符串’’,从而可以匹配 a*
^开始字符,例如,/^A/ 不匹配 ‘abA’,但是匹配 ‘Ab’ 中的‘A’
$结束字符,例如,/c$/不匹配 ’abcd‘中的‘c’,但是匹配 ‘abc’中的‘c’
*匹配前一个表达式 0次到多次。等价于{0,}
console.log(‘abbbcd’.match(/b*/).join(’,’)) // 什么也不显示
console.log(‘abbbcd’.match(/ab*/).join(’ ')) // abbb
+匹配前一个表达式1次或者多次。等价于{1,}
console.log(‘abbbbcd’.match(/b+/).join(’,’)) //bbbb
console.log(‘abbbbcd’.match(/bb+/).join(’,’)) //bbbb
?匹配前一个表达式0次或者一次,等价于{0,1}
如果 紧跟子啊任何量词、+、?或者{}的后面**,将会使变量变为*非贪婪的的(匹配尽量少的字符)
console.log(‘abbbbcd’.match(/ab?/).join(’,’)) //ab
console.log(‘angel’.match(/e?le?/).join(’,’)) // el
console.log(‘123abc’.match(/\d+/).join(’,’)) // 123
console.log(‘123abc’.match(/\d+?/).join(’,’)) // 1
.(小数点)匹配除换行符之外的任何单个字符
console.log(‘abbbbcd’.match(/.b/).join(’,’)) // ab
console.log(‘abbbbcd’.match(/.d/).join(’,’)) // cd
console.log(‘a\rbbbbcd’.match(/.b/).join(’,’)) // bb
console.log(‘a\nbbbbcd’.match(/.b/).join(’,’)) // bb
(x)匹配’x‘ 并且记住匹配项,括号被称为捕获括号
模式/(foo) (bar) \1 \2/中的 ‘(foo)’ 和 ‘(bar)’ 匹配并记住字符串 “foo bar foo bar” 中前两个单词。模式中的 \1 和 \2 匹配字符串的后两个单词。注意 \1、\2、\n 是用在正则表达式的匹配环节。在正则表达式的替换环节,则要使用像 $1、 2 、 2、 2n 这样的语法,例如,‘bar foo’.replace( /(…) (…)/, ‘$2 $1’ )。
console.log(‘bar foo’.replace(/(…)(…)/, ‘$2 $1’)) // fo baro
console.log(‘bar foo’.replace(/(…)(…)/, ‘$1 $1’)) // bar baro
console.log(‘barfoo’.replace(/(…)(…)/, ‘$2 $1’)) // foo bar
console.log(‘barfoo’.replace(/(…)(…)/, ‘$1 $1’)) // bar bar
console.log(‘foobarfoobar’.match(/(foo)(bar) \1\2/)) // null 这个还没看懂
console.log(‘foobarfoo’.match(/(foo)(bar)/).join(’,’)) // foobar,foo,bar
(?:x)匹配’x’但是不记住匹配项,叫做非捕获括号
console.log(‘foo’.match(/(?:foo){1,2}/).join(’,’)) // foo
console.log(‘foofoo’.match(/(?:foo){1,2}/).join(’,’)) // foofoo
console.log(‘foofoofoo’.match(/(?:foo){1,2}/).join(’,’)) // foofoo
console.log(‘foofoofoo’.match(/foo{1,2}/).join(’,’)) // foo
console.log(‘foooofoo’.match(/foo{1,2}/).join(’,’)) // foo0
x(?=y)匹配‘x’仅仅当‘x’后面跟着‘y’,叫做正向肯定查找
console.log(‘jsong’.match(/jsong(?=neu)/)) // null
console.log(‘jsongneu’.match(/jsong(?=neu)/).join(’,’)) // jsong
console.log(‘jsongmaster’.match(/jsong(?=neu|master)/).join(’,’)) // jsong
console.log(‘jsongneu’.match(/jsong(?=neu|master)/).join(’,’)) // jsong
x(?!y)匹配;x’仅仅当‘x’后面不是’y’时,叫正向否定查找
console.log(‘jsong’.match(/jsong(?!neu)/).join(’,’)) // jsong
console.log(‘jsongHAHA’.match(/jsong(?!neu)/).join(’,’)) // jsong
console.log(‘jsongss’.match(/jsong(?!neu|master)/).join(’,’)) // jsong
console.log(‘jsongneu’.match(/jsong(?!neu|master)/)) // null
x|y匹配x或y
console.log(‘jsongneu’.match(/jsong|neu/).join(’,’)) // jsong
console.log(‘songneu’.match(/jsong|neu/).join(’,’)) // neu
{n}n是一个正数,匹配了前面一个字符刚好发生了n次
console.log(‘ab’.match(/a{2}/)) // null
console.log(‘aba’.match(/a{2}/)) // null
console.log(‘aab’.match(/a{2}/).join()) // aa
console.log(‘aaab’.match(/a{2}/).join()) // aa
console.log(‘aabcab’.match(/ab{2}/)) // null
console.log(‘aacbb’.match(/ab{2}/)) // null
{n,m}n和m都是正数,匹配了前面的字符发生>=n&&<=m次
console.log(‘aaab’.match(/a{2,3}/).join()) // aa
console.log(‘aabab’.match(/a{2,3}/).join()) // aa
console.log(‘ababab’.match(/a{2,3}/)) // null
[xyz]字符集合,匹配括号中的任意字符,包括转移字符。破折号(-)代表字符范围,如a-c代表abc
console.log(‘abc’.match(/[a-r]/).join()) // a
console.log(‘abc’.match(/[ab]/).join()) // a
console.log(‘a’.match(/[a-c.]/).join()) // a
console.log(’.’.match(/[a-c.]/).join()) // .
console.log(‘w.’.match(/[\w.]/).join()) // w
console.log(’.’.match(/[\w.]/).join()) // .
[^xyz]反向的字符集,就是说 不包括括号中的字符。
console.log(‘abcd’.match(/[^a-c]/).join()) // d
console.log(‘a’.match(/[^a-c.]/)) // null
console.log(’.’.match(/[^a-c.]/)) // null
console.log(‘a.’.match(/[^\c.]/).join()) // a
console.log(‘a’.match(/[^w.]/).join()) // a
console.log(’.’.match(/[^\w.]/)) // null
[\b]匹配一个退格
console.log(’\b’.match(/[\b]/).join()) //
\b匹配一个词的边界,简单的说\b就是边界,\b的位置不能有字符
console.log(‘moon’.match(/\bm/).join()) // m
console.log(‘moon’.match(/oo\b/)) // null
console.log(‘moon’.match(/oon\b/).join()) // oon
console.log(‘oon’.match(/\boon\b/).join()) // oon
\B匹配非边界
console.log(‘moon’.match(/\Bm/)) // null
console.log(‘moon’.match(/oo\B/).join()) // oo
console.log(‘possibly yesterday’.match(/yes\B/).join()) // yes
\cX当X是处于A到Z之间的字符的时候,匹配字符串中的一个控制符。
例如,/\cM/ 匹配字符串中的 control-M (U+000D)。这个没弄明白???
\d匹配一个数字,等价于[0-9]
console.log(‘1’.match(/\d/).join()) // 1
console.log(‘23’.match(/\d/).join()) // 2
\D匹配一个非字符,等价于[^0-9]
console.log(‘1’.match(/\D/)) // null
console.log(‘2b’.match(/\D/).join()) // b
console.log(‘1’.match(/[^0-9]/)) // null
console.log(‘2b’.match(/[^0-9]/).join()) // b
\f匹配一个换页符
console.log(’\f’.match(/\f/)) // 空的
\n匹配一个换行符
\r匹配一个回车符
\s匹配一个空白符,包括空格,制表符,换页付,换行符
console.log(‘foo bar’.match(/\s\w*/).join()) // bar
console.log(’ a’.match(/\sa/).join()) // a
\S匹配一个非空白符
console.log(‘foo bar’.match(/\S\w*/).join()) // foo
console.log(‘ba’.match(/\Sa/).join()) // ba
\t匹配一个水平制表符
\v匹配一个垂直制表符
\w匹配一个单字字符(字母、数字、下划线),等价于[A-Za-z0-9_]
console.log(‘foo bar’.match(/\w/).join()) // f
console.log(’_foo bar’.match(/\w/).join()) // _
console.log(‘1foo bar’.match(/\w/).join()) // 1
\W匹配一个非单字字符串,等价于[^A-Za-z0-9_]
console.log(’%foo bar’.match(/\W/).join()) // %
console.log(’$foo bar’.match(/\W/).join()) // $
\n在正则表达式中,它返回最后的第n个子捕获匹配的子字符串(捕获的数目以左括号计数)。
console.log(‘apple, orange, cherry, peach.’.match(/apple(,)\sorange\1/).join(’ ')) // apple, orange, ,

参考
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值