[英]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/
格式的任何字符串,其中x
和y
是字母。 因此它將匹配/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.