正则表达式匹配字符串的一部分

时间:2009-11-23 18:55:25

标签: javascript regex

正则表演再次有趣......

http://something.com/en/page

为例

我想测试/ en /包括正斜杠的完全匹配,否则它可以匹配字符串其他部分的'en'。

我确信这对我以外的其他人来说很容易!

编辑:

我在javascript中使用它作为string.match()

6 个答案:

答案 0 :(得分:6)

那真的取决于执行正则表达式的编程语言,但实际的正则表达式只是

/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');
}

<强> DUH

感谢Welbog和Chris Ballance做出本应该是最明显的观点。这不需要正则表达式来解决。它只是一个包含声明。正则表达式只应该在需要的地方使用,这应该是我的第一个考虑因素,而不是最后一个考虑因素。

答案 1 :(得分:5)

如果您尝试专门匹配/en/,则根本不需要正则表达式。只需使用您的语言相当于contains来测试该子字符串。

如果您尝试匹配两个斜杠之间的URL的任意两个字母部分,则需要这样的表达式:

/../

如果要捕获双字母代码,请将句点括在括号中:

/(..)/

根据您的语言,您可能需要转义斜杠:

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

如果你想确保匹配字母而不是任何字符(包括数字和符号),你可能想要使用这样的表达式:

/[a-z]{2}/

大多数正则表达式都会被识别出来。

同样,您可以通过这种方式转义斜杠并添加捕获组:

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

如果你不需要逃脱它们:

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

此表达式将匹配/xy/形式的任何字符串,其中xy是字母。因此它会匹配/en//fr//de/

在JavaScript中,您需要转义版本:\/([a-z]{2})\/

答案 2 :(得分:2)

你可能需要逃避正斜面......

/\/en\//

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

你不需要正则表达式:

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

当然,如果你坚持使用正则表达式,请使用:

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