David Flanagan所著的JavaScript 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.]+
来使用.+
吗? 最佳答案
冒着被投票的风险,我要说的是David Flanagan的正则表达式中实际上有一个错字。正如@nnnnnn在他的评论中提到的那样,.
点元字符包括\w
,因此字符类[\w.]+
与(.)+
没什么不同。还要注意,(\w)+
不足以捕获URL的域,因为它包含句点,而\w
不匹配。因此,我相信David打算使用以下正则表达式:
var url = /(\w+):\/\/(.+)\/(\S*)/;