正则表达式中的国际字符检测

时间:2011-05-13 21:54:04

标签: javascript regex

这是一个用于检测亚马逊产品页面的正则表达式。它适用于标准英语的页面,但不适用于带有国际字符的网址。因此未检测到URL2。我该如何解决这个问题?感谢。

var URL1 = "www.amazon.com/Big-Short-Inside-Doomsday-Machine/dp/0393338827/";
var URL2 = "www.amazon.fr/Larm%C3%A9e-furieuse-Fred-Vargas/dp/2878583760/";

var regex1 = RegExp("http://www.amazon.(com|co.uk|de|ca|it|fr|cn|co.jp)/([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})");
m = URL1.match(regex1);

1 个答案:

答案 0 :(得分:1)

%\w不匹配,因此Larm%C3%A9e-furieuse-Fred-Vargas[\w-]+不匹配。为什么不使用[^/]+

PS - “.”匹配任何字符,因此您应该使用模式\.,它在文字中显示为\\.

RegExp("http://www\\.amazon\\.(ca|cn|co\\.(jp|uk)|com|de|fr|it)/([^/]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})");