使用速记字符类的正则表达式

时间:2013-12-27 17:54:01

标签: javascript regex

我有:

var regex = /[\w ]*/;

var str = 'My name is Robeet';

var match = str.match( regex );

document.write(match);

它返回:

My name is Robeet 

这不应该是一个错误,因为全局搜索中不包含“g”标志吗?

我用“g”标志尝试了它并得到了完全相同的结果。

2 个答案:

答案 0 :(得分:2)

您的模式具有零或多个量词(*),因此它将匹配单词字符或空格的任何序列。由于您的整个字符串符合该标准,这正是您应该期待的。

为了进行比较,请尝试删除量词:

'My name is Robeet'.match(/[\w ]/); 
// ["M"];
'My name is Robeet'.match(/[\w ]/g);
// ["M", "y", " ", "n", "a", "m", "e", ...]

答案 1 :(得分:0)

来自W3Schools

  

g修饰符用于执行全局匹配(查找所有匹配项,而不是在第一次匹配后停止)

而这正是你的正则表达式所做的。

缺少 g 标志并不意味着你的正则表达式不再贪婪。它仍会尝试找到最长可能的模式,在初始模式之后,它将找不到后续模式。