我正在尝试使用正则表达式从字符串中提取内容。我知道我不必使用全局运算符,因为我只需要一个匹配,但我很好奇为什么它不起作用
var string = 'a02_ability10'
string.match(/(?:^a)([\d]+)/gi)
这不会给我任何结果。删除它工作的全局运算符。我在regex测试器中使用它与全局运算符一起工作。
试图让“02”出局
为什么不在这里工作?
答案 0 :(得分:0)
如果没有 gi ,它会在下一个位置给出完全匹配的字符串和组匹配的字符串([\ d],即12)。(仅返回第一个匹配的字符串)
var string =' a12_ability10'
string.match(/(?:^ A)([\ d] +)/)
结果:[" a12"," 12&#34 ;,索引:0,输入:" a12_ability10"]
使用 gi :它只会提供完全匹配的字符串。
结果:[" a12"]
请参阅以下示例以便更好地理解。
var string = 'a12_ability10'
var result =string.match(/(?:^a)([\d]+)/)
console.log(result);
var string = 'a12_ability10'
var result =string.match(/(?:^a)([\d]+)/gi)
console.log(result);
var string = 'a12_a10'
var result= string.match(/(?:a)([\d]+)/);
console.log(result);
var result= string.match(/(?:a)([\d]+)/gi);
console.log(result);