簡體   English   中英

簡單的javascript正則表達式以匹配所需的url模式幫助

[英]simple javascript regex to match url pattern help needed

我從未使用過正則表達式語法,有人可以幫我檢查一下示例中的URL是否匹配特定的結構嗎?

。*可以是任何東西,包括/ -_#等,0-9可以是任何數字長度(例如1993334)。

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

嘗試這個:

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

因此,請轉義斜線,並使用+來指定前面的元素必須為“一個或多個”。

使用[0-9] +代替[0-9],並正確使用斜線。

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

您已經得到了答案,所以這沒問題,但是就像Cerbrus告訴您的那樣,我將解釋為什么正則表達式不起作用。

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

/articles/部分完全正確。

您已經對[0-9] (任意數字)有所了解,但是您已指定“僅出現一次”。 通過添加+您可以指定“一個或多個”,就像添加了* ,表示“零或多個”。

在您的上一個匹配項[.*] ,您要匹配重復了“零個或多個”( * )次的“任何字符”( . ),因此可以匹配/articles/2/的URL(此后沒有任何內容) ,並且我認為這是不必要的行為。

確切地說,您甚至可以使用的正則表達式

^/articles/[0-9]+/.+$

^表示“這必須是開始”,而$表示“這必須是結束”。

如果您不包括這些內容,則可以匹配/non-relevant-url/articles/123/my-article/whatever/foo/bar類的URL(如果以/non-relevant-url開頭,則可能不希望進行匹配/non-relevant-url ^解決了這個問題。)

注意:在此示例中,實際上並不需要$ ,因為您在結束時會看到“匹配此點之后的所有內容”,但是我包括了它,因此您會知道它的含義(因為與^一樣有用)

希望它為您提供了對正則表達式的細微了解,而正則表達式一經學習便具有強大的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM