2014-12-19 68 views
1

我做以下正則表達式中的節點:字符類 w不工作?

var checkPath = '^\/path\/([\w]+)\/messages$'; 
var path = '/path/54946fde030ba8cc5471efc9/messages'; 
var match = path.match(checkPath); 

這似乎並沒有工作。

然而,當我這樣做:

var checkPath = '^\/path\/([0-9a-z]+)\/messages$'; 
var path = '/path/54946fde030ba8cc5471efc9/messages'; 
var match = path.match(checkPath); 

看來工作。

有什麼區別?

回答

3

您可能要編寫類似

var checkPath = '^/path/(\\w+)/messages$'; 
var path = '/path/54946fde030ba8cc5471efc9/messages'; 
var match = path.match(checkPath); 

變化做出

  • 逃生\w\\w

  • \w =>[a-zA-Z0-9_]因此,在另一個類封閉\w不添加一個y的優勢,簡寫爲\w

+0

您也需要轉義其他反斜槓('\ /''>'\\ /')。更好的是,只需放下反斜槓;當你以字符串形式創建正則表達式時,'/'不需要轉義 –

+0

@AlanMoore編輯我的答案。謝謝 – nu11p01n73R