Javascript 如何在NodeJS中检测类似的url,但使用不同的语言?

Javascript 如何在NodeJS中检测类似的url,但使用不同的语言?,javascript,node.js,string,string-comparison,Javascript,Node.js,String,String Comparison,我试图从URL数组中检测类似的URL。 我需要比较设置不同的URL,并测试它们是否最初是相同的URL? 作为一个例子,我希望它应该被检测到类似于和类似于。另一个像booking.com这样的网站的例子,我希望它会被检测到,类似于 任何想法 如果您要查找的两种语言代码方案由您显示的示例URL标识: https://www.booking.com/index.en.htm https://www.booking.com/index.ar.htm 及 及 然后,您可以设计一个正则表达式,将斜杠或句点

我试图从URL数组中检测类似的URL。 我需要比较设置不同的URL,并测试它们是否最初是相同的URL? 作为一个例子,我希望它应该被检测到类似于和类似于。另一个像booking.com这样的网站的例子,我希望它会被检测到,类似于


任何想法

如果您要查找的两种语言代码方案由您显示的示例URL标识:

https://www.booking.com/index.en.htm
https://www.booking.com/index.ar.htm

然后,您可以设计一个正则表达式,将斜杠或句点分隔符之间的任何两个字母的语言代码替换为URL中不可能自然出现的规范字符集。这将基本上消除语言代码,然后您可以比较其余的URL:

仅供参考,这里有一个语言代码列表:

如果您只需对要比较的两个url中的每一个调用
removeLanguageIdentifier(url)
,并对每个url比较该函数的结果,那么您将中和显示的两个分隔符之间的任何两个字母的国家

注意:这不是万无一失的。如果某人有一个常规URL,其中包含两个字母的国家代码作为路径段,而该路径段本身并不打算成为语言代码,然后,现在有一种方法可以让您知道它是否应该被解释为语言代码,除非您事先知道特定域如何对其URL进行编码,并且可以将该smarts构建到您的函数中


因此,对于您提供的有限信息,我们所能做的最好的事情就是对您提供的三种形式的语言代码进行一个有根据的“猜测”。

我认为这不应该留给JavaScript来完成。您可以尝试比较字符串的最后一部分,看看它是否匹配,但如果URL中的关键字被翻译成其他语言,这将无助于您。我认为使用服务器端解决方案并检查
链接
标记以查找规范URL以及HTML标记上的language属性将是最好的。嗯,如果网站根本没有实现规范链接怎么办?然后,您需要进行字符串比较,如果URL本身被翻译,这同样是无用的。大多数关心SEO的网站都实现了规范的URL(查看booking.com,它就在那里)。它也是由流行的CMS(如WP)自动生成的。让我们假设字符串比较是最好的解决方案,那么你知道一个通用正则表达式可以为我做这件事吗!现在大多数网站都将该语言作为URL的一部分(如/en/或/fr/…等)。您可以在
/
上使用
split
字符串,并获取最后一项并进行比较。@HazemHagrass-就像我说的“这包括了您展示的示例”。如果您想介绍更多的示例,那么您必须公开这些示例,并找出如何修改代码以包含它们。我通过在最后一个组中添加一个
$
来增加对该组的支持。
http://example.com/en/open
http://example.com/es/open
http://example.com/en
http://example.com/es
function removeLanguageIdentifier(url) {
    let re = /([\/\.])(aa|ab|af|ad|sq|am|ar|an|hy|as|av|ae|ay|az|ba|bm|eu|be|bn|bh|bi|bo|bs|br|bg|my|ca|cs|ch|ce|zh|cu|cv|kw|co|cr|cy|cs|da|de|dv|nl|dz|el|en|eo|et|eu|ee|fo|fa|fj|fi|fr|fy|ff|ka|gd|fa|dl|gv|el|gn|gu|ht|ja|he|hz|hi|ho|hr|hu|hy|ig|is|io|ii|iu|ie|ia|id|ik|is|it|jv|ja|kl|kn|ks|ka|kr|kk|km|ki|rw|ky|kv|kg|ko|kj|ku|lo|la|lv|li|ln|lt|lb|lu|lg|mk|mh|ml|mi|mr|ms|mk|mg|mt|mn|mi|ms|my|na|nv|nr|nd|ng|ne|nl|nn|nb|no|ny|oc|oj|or|om|os|pa|fa|pi|pl|pt|ps|qu|rm|ro|rn|sg|sa|si|sk|sl|se|sm|sn|sd|so|st|es|sq|sc|sr|ss|su|sw|sv|ty|ta|tt|te|tg|tl|th|bo|ti|to|tn|ts|tk|tf|tw|ug|uk|ur|uz|ve|vi|vo|cy|wa|wo|xh|yi|yo|za|zh|zu])([\/\.$])/i;
    return url.replace(re, "$1_._$3");
}