使用[\ w。] +代替。+的JavaScript中的正则表达式

时间:2016-01-18 05:07:07

标签: javascript regex

在David Flanagan撰写的JavaScript the Definite Guide 6th edition中,有一个使用正则表达式的例子:

例如,考虑使用以下代码解析URL:

var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var text = "Visit my blog at http://www.example.com/~david";

var result = text.match(url);
if (result != null) 
{
    var fullurl = result[0];   // Contains "http://www.example.com/~david"  
    var protocol = result[1];  // Contains "http"    
    var host = result[2];      // Contains "www.example.com"
    var path = result[3];      // Contains "~david" 
}

我想知道为什么在第二个带括号的表达式中他使用[\w.]+而不只是.+

1 个答案:

答案 0 :(得分:3)

冒着被投票的风险,我会说David Flanagan在他的正则表达中实际上有一个拼写错误。正如@nnnnnn在评论中提到的,.点元字符包含 \w,因此字符类[\w.]+(.)+没有区别。另请注意,(\w)+ 足以捕获网址域,因为它包含\w 匹配的句点。所以,我相信大卫打算使用以下正则表达式:

var url = /(\w+):\/\/(.+)\/(\S*)/;