创建一个正则表达式
可以使用正则表达式字面量,也可以通过RegExp构造函数
var re = /abc/gi
var re = new regexp(“abc”,’gi’)
其中abc
是re.source
gi
是re.flags
lastIndex 改变
注意: 在全局匹配模式下,lastIndex的值在每次调用exec()或test()后都会增加,而在非全局模式下则始终保持不变。
var regex = /foo/g;
// regex.lastIndex is at 0
regex.test('foo'); // true
// regex.lastIndex is now at 3
regex.test('foo'); // false
String.prototype.match()
返回值
如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。
'hhabcdefxx'.match(/abc(?<xxx>def)/g) // ['abcdef']
let res = 'hhabcdefxx'.match(/abc(?<xxx>def)/) //
// ["abcdef", "def", index: 2, input: "hhabcdefxx", groups: {xxx: def}]
res表示的内容
res[0] 匹配到的字符串
res[1,n] 分组匹配到的字符串
res[‘index’] 匹配到的字符串位于原始字符串的索引
res[‘input’] 原始字符串
res[‘groups’] 各个分组匹配到的字符串 key值为分组名