正则表演再次有趣......
为例我想测试/ en /包括正斜杠的完全匹配,否则它可以匹配字符串其他部分的'en'。
我确信这对我以外的其他人来说很容易!
编辑:
我在javascript中使用它作为string.match()
答案 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/
形式的任何字符串,其中x
和y
是字母。因此它会匹配/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)