字符类\ w不工作?

我在Node中做下面的正则expression式:

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); 

这似乎工作。

有什么不同?

你可能想写

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

所做的更改

  • Escape \w as \\w

  • \w => [a-zA-Z0-9_]因此将\w包含在另一个类中并不会增加任何优势,简单写为\w