规则
- 特殊字符
- \w字母数字下划线
- \d数字
- \b单词边界
- \s空格
- .除换行之外
- [匹配规则], {重复次数}, (分组)
- ^foo: foo开头
- [^\w] 非\w
创建一个regexp
- new RegExp('foo', g)
new RegExp('\w', g)
等同于
new RegExp('w', g)
等同于
/w/g
需要用转义字符再转译一次
new RegExp('\\w')
等同于
/\w/
- 标识符
g 全局
i 大小写忽略
m 有换行符的多行
方法
String.prototype.match
var str = 'foo 234typefoo'
1. reg 不带全局
var reg = /(fo)o/
str.match(reg) // ['foo', 'fo', index: 0, input: 'foo 234typefoo', groups: undefined]
只会返回第一项的各种信息和分组内容
2. reg 带全局
var reg = /(fo)o/g
str.match(reg) // ['foo', 'foo']
会返回所有匹配项组成的数组,但是没有其他分组信息
String.prototype.matchAll 接受一个全局正则,返回匹配到的每一项所有信息的集合
var str = 'foo 234typefoo'
var reg = /(fo)o/g // 只能是全局的reg
str.matchAll(reg) // [['foo', 'fo', index: 0, input: 'foo 234typefoo', groups: undefined], ['foo', 'fo', index: 11, input: 'foo 234typefoo', groups: undefined]]
String.prototype.replace
var str = 'foo 234typefoo'
var reg = /foo/g
str.replace(reg, '替换想')
等同于
str.replaceAll('foo', '替换想')
reg.test(str) 匹配到true
reg.exec(str) 每调用一次匹配一项
var str = 'foo 234typefoo'
var reg = /foo/g
reg.exec(str)
// ['foo', index: 0, input: 'foo 234typefoo', groups: undefined]
reg.exec(str)
// ['foo', index: 11, input: 'foo 234typefoo', groups: undefined]
网友评论