\b
表示单词边界,比如我想在一段话中精确找到单词im,或我想找eng结尾的所有单词,这时候就可以通过单词边界进行匹配。/\bim\b/
/\w+eng\b/g
构造函数中
new RegExp()
中一定要记得对反斜线\进行转义,在javascript中反斜线本身就是特殊字符,使用需要转义var reg = new RegExp('\\w+eng\\b','g') //undefined// reg = /\w+eng\b/g"asd abc leng kkeng alkegl lkjengll".match(reg)// ["leng","kkeng"]\t
水平制表符,其实就是tab键占的空格![abc]
创建abc字符类,[^abc]
创建反向字符类,就是差集的意思,除了abc其他的都匹配\w
的等价类就是[a-zA-Z_0-9]
,\s
是[\t\n\x0B\f\r]
空白符正则默认是贪婪模式,即最大程度地匹配,非贪婪模式则是说尽可能少地匹配,也就是说一旦成功不再继续尝试就是非贪婪模式。
// 贪婪模式"123456789".match(/\d{3,6}/) //123456 而不是123// 非贪婪模式,只要在量词后面加上?就可以了,比如\w+?"123456789".match(/\d{3,6}?/g) // ["123","456","789"]连续匹配python单词3次,可以通过分组功能实现
(python){3}
,量词可以作用于组别上,或
|
如下所示"ByronCapser".replace(/Byron|Casper/g,"X") // XX"ByronsperByrCapser".replace(/Byr(on|Ca)sper/g,"X") // XX反向引用,比如想把2015-12-25 变成 12/25/2015 如何实现
"2015-12-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,"$2/$3/$1") // "12/25/2015"// $1,$2,$3可以捕获分组匹配的内容// 如果不想捕获某个分组,只需要在分组内加上 ?: 就可以了"2015-12-25".replace(/(\d{4})-(?:\d{2})-(\d{2})/g,"$2/$1") // "25/2015"split也可以用正则,比如如下的例子
"asd@lll.box*tem".split(/[@\.\*]/) //["asd","lll","box","tem"]