Javascript: 匹配URL的slug

25 浏览
0 Comments

Javascript: 匹配URL的slug

我想使用Javascript和正则表达式来获取给定URL的slug。我尝试了以下方法,但它只匹配到h而不是This-is-the-slug-to-be-matched

var url = "http://www.domain.com/region/town/This-is-the-slug-to-be-matched;art6066,1184999";
var slug = url.match(/[a-z0-9-]/);

0
0 Comments

问题的出现原因是作者想要从一个URL中匹配出slug部分,也就是最后一个斜杠(/)之后第一个分号(;)之前的内容。作者采用了使用substring()和lastIndexOf()函数的方法来实现这个目标。

解决方法是使用以下代码:

var slug = url.substring(url.lastIndexOf('/')+1, url.indexOf(';'));

这个方法将返回匹配到的slug,即"This-is-the-slug-to-be-matched"。

文章的后面部分是对这个解决方法的性能评估。通过对比使用.split().pop()方法和使用.substring()和.lastIndexOf()函数的方法,作者的方法至少快35%。性能评估结果显示,作者的方法每秒执行约4百万次操作,而.split().pop()方法只能执行约2.6百万次操作。

作者提到,如果性能对你很重要,你可能会考虑使用他的解决方法。

最后,作者还表示感谢,但他并不想匹配到"art6066,1184999"这部分内容。

0
0 Comments

Javascript: 匹配URL的slug

问题的出现原因:

正则表达式中的括号没有正确关闭,导致出现了"Invalid regular expression: Unterminated group"的错误。

解决方法:

在正则表达式中添加缺失的闭合括号,即在+后面添加一个闭合括号,如下所示:url.match(/.*\/([-a-z0-9]+)/i)。这样就可以正确地匹配URL中的slug了。

具体代码如下:

var slug = url.match(/.*\/([-a-z0-9]+)/i)[1];

其中,.*\/会跳过URL中的所有内容,直到最后一个/出现。而[-a-z0-9]+会匹配一个或多个字母、数字或连字符。将后者放在(...)中,使其成为一个捕获组,然后使用[1]返回第一个捕获组。

这样,就可以正确地提取URL中的slug了。

0
0 Comments

从上述代码中我们可以看到,该问题的出现原因是需要从一个URL中提取出slug。slug是URL中的一部分,用于标识该URL所指向的资源。在这种情况下,slug位于URL的最后一个斜杠之后,并且在最后一个斜杠之后的第一个冒号之前。

为了解决这个问题,我们可以使用JavaScript的split()方法将URL字符串拆分为一个数组。首先,我们可以使用split("/")将URL字符串按照斜杠分割,这样我们就可以得到一个包含每个URL部分的数组。然后,我们可以使用pop()方法获取数组的最后一个元素,即slug所在的位置。

接下来,我们可以再次使用split(";")方法将slug字符串按照冒号分割,这样我们就可以得到一个包含slug和其他可能的参数的数组。由于我们只关心slug部分,我们可以使用[0]来获取数组的第一个元素,即slug。

最后,我们可以将slug打印到控制台上,以验证我们提取的是否正确。

通过上述代码和步骤,我们可以成功提取出URL中的slug,并将其作为输出。

0