简单的javascript正则表达式匹配url模式帮助需要

时间:2013-01-07 09:50:41

标签: javascript regex

我从来没有使用正则表达式语法,有人可以帮助我检查URL是否与我的示例中的特定结构匹配吗?

。*可以是包括/ -_#etc在内的任何内容,0-9可以是任意数字长度(ex 1993334)。

var pattern = new RegExp('/articles/[0-9]/[.*]');
if (pattern.test(document.location.href)) {
    // match found
}

3 个答案:

答案 0 :(得分:0)

试试这个:

\/articles\/[0-9]+\/.*

因此,请转义斜杠,并使用+指定必须有前面元素中的“一个或多个”。

答案 1 :(得分:0)

使用[0-9] +而不是[0-9]并正确使用斜杠..

var pattern = new RegExp(\/articles\/[0-9]+\/(.*));
if (pattern.test(document.location.href)) {
    // match found
}

答案 2 :(得分:0)

你已经得到了答案,所以没问题,但就像Cerbrus告诉你的那样,我会解释为什么正则表达式不起作用。

new RegExp('/articles/[0-9]/[.*]');

/articles/部分完全正确。

您已经了解了[0-9](任何数字),但您已经指定“这只出现一次”。通过添加+,您可以指定“一个或多个”,就像添加了*一样,它意味着“零或更多”。

在您的上一场比赛[.*]中,您将匹配“任何字符”(.)重复“零或更多”(*)次,因此您的网址为{{ 1}}(此后没有任何内容)可以匹配,我认为这是不需要的行为。

完全准确,您甚至可以使用

的正则表达式

/articles/2/

^/articles/[0-9]+/.+$表示“这必须是开始”而^表示“这必须是结束”。

如果您不包含这些内容,则可以匹配$之类的网址(如果以/non-relevant-url/articles/123/my-article/whatever/foo/bar开头,您可能不希望匹配 - /non-relevant-url修复此问题。)

注意: ^在这个例子中并不是真的有必要,看到你用“匹配过去这一点的所有内容”结束它,但我把它包括在内你所以知道它意味着什么(因为知道$

同样有用

希望它能让你对正则表达式有一个小小的洞察力,曾经学过它非常强大。