[英]Regular expressions in JavaScript using [\w.]+ instead of.+
在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.]+
而不僅僅是.+
?
有可能被投票,我會說David Flanagan在他的正則表達中實際上有一個拼寫錯誤。 正如@nnnnnn在評論中提到的那樣.
點元字符包括 \\w
,因此字符類[\\w.]+
與(.)+
沒有區別。 還要注意的是(\\w)+
不足以捕捉URL的域名,因為它包含時間,這\\w
不匹配。 所以,我相信David打算使用以下正則表達式:
var url = /(\w+):\/\/(.+)\/(\S*)/;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.