我有:
var regex = /[\w ]*/;
var str = 'My name is Robeet';
var match = str.match( regex );
document.write(match);
它返回:
My name is Robeet
这不应该是一个错误,因为全局搜索中不包含“g”标志吗?
我用“g”标志尝试了它并得到了完全相同的结果。
答案 0 :(得分:2)
您的模式具有零或多个量词(*
),因此它将匹配单词字符或空格的任何序列。由于您的整个字符串符合该标准,这正是您应该期待的。
为了进行比较,请尝试删除量词:
'My name is Robeet'.match(/[\w ]/);
// ["M"];
'My name is Robeet'.match(/[\w ]/g);
// ["M", "y", " ", "n", "a", "m", "e", ...]
答案 1 :(得分:0)
g修饰符用于执行全局匹配(查找所有匹配项,而不是在第一次匹配后停止)
而这正是你的正则表达式所做的。
缺少 g 标志并不意味着你的正则表达式不再贪婪。它仍会尝试找到最长可能的模式,在初始模式之后,它将找不到后续模式。