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

Ben*_*Ben 1 javascript regex

正则表达式再次有趣......

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

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

对于我以外的其他人,我确信这很容易!

编辑:

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

Mic*_*oie 6

那真的取决于正在执行正则表达式的编程语言,但实际的正则表达式很简单

/en/
Run Code Online (Sandbox Code Playgroud)

对于.Net,以下代码正常工作:

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

bool MatchFound = Regex.Match(url, "/en/").Success;
Run Code Online (Sandbox Code Playgroud)

这是JavaScript版本:

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

DUH

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

  • 使用简单的String.Contains("/ en /")比使用Regex要便宜...... (3认同)
  • 使用`regex.test()`比`string.match()`便宜 (2认同)

Wel*_*bog 5

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

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

/../
Run Code Online (Sandbox Code Playgroud)

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

/(..)/
Run Code Online (Sandbox Code Playgroud)

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

\/..\/
\/(..)\/
Run Code Online (Sandbox Code Playgroud)

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

/[a-z]{2}/
Run Code Online (Sandbox Code Playgroud)

这将被大多数正则表达式变体识别.

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

\/([a-z]{2})\/
Run Code Online (Sandbox Code Playgroud)

如果你不需要逃脱它们:

 /([a-z]{2})/
Run Code Online (Sandbox Code Playgroud)

此表达式将匹配表单/xy/中的任何字符串,其中xy是字母.所以它会匹配/en/,/fr/,/de/,等.

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

  • +1 指出正则表达式对于精确匹配来说不是必需的。 (2认同)