簡體   English   中英

正則表達式匹配字符串的一部分

[英]Regex to match part of a string

正則表達式再次有趣...

http://something.com/en/page為例

我想在/ en /上測試是否完全匹配,包括正斜杠,否則它可能與字符串其他部分的“ en”匹配。

我敢肯定,這對我以外的人來說都很容易!

編輯:

我將其用於javascript中的string.match()

好吧,這實際上取決於將使用哪種編程語言執行正則表達式,但是實際的正則表達式很簡單

/en/

對於.Net,以下代碼可以正常工作:

string url = "http://something.com/en/page";

bool MatchFound = Regex.Match(url, "/en/").Success;

這是JavaScript版本:

var url = 'http://something.com/en/page';
if (url.match(/\/en\//)) {
    alert('match found');
}
else {
    alert('no match');
}

杜氏

感謝Welbog和Chris Ballance提出了最明顯的觀點。 這不需要正則表達式來解決。 它只是一個包含語句。 正則表達式僅應在需要的地方使用,那應該是我的第一個考慮因素,而不是最后一個考慮因素。

如果您要專門匹配/en/ ,則根本不需要正則表達式。 只需使用您語言的等效contains來測試該子字符串。

如果要在兩個斜杠之間匹配URL的任何兩個字母部分,則需要這樣的表達式:

/../

如果要捕獲兩個字母的代碼,請將句點括在括號中:

/(..)/

根據您的語言,您可能需要轉義斜線:

\/..\/
\/(..)\/

而且,如果要確保匹配字母而不是任何字符(包括數字和符號),則可能要使用如下表達式:

/[a-z]{2}/

大多數正則表達式變體都可以識別。

同樣,您可以轉義斜線並通過以下方式添加捕獲組:

\/([a-z]{2})\/

如果您不需要逃避它們:

 /([a-z]{2})/

此表達式將匹配/xy/格式的任何字符串,其中xy是字母。 因此它將匹配/en//fr//de/等。

在JavaScript中,您需要轉義版本: \\/([az]{2})\\/

您可能需要轉義正斜線...

/\/en\//

任何原因/en/將不起作用?

/\\/en\\///http\\w*:\\/\\/[^\\/]*\\/en\\//

您不需要正則表達式:

location.pathname.substr(0, 4) === "/en/"

當然,如果您堅持使用正則表達式,請使用以下命令:

/^\/en\//.test(location.pathname)

暫無
暫無

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

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