用于检测字符串开头的/en/或/nl/的正则表达式



让字符串是否以/en/或/nl/或/ab/开头,换句话说:

/后面跟着两个字母,以/

结尾

可能在字符串的末尾有一些东西,但这并不介意。

例子:

/nl/ -> match
/marketing/ -> no match
/marketing.html -> no match
/12/ -> no match

我试过了:^/[a-z]/$,但我觉得我没走对。

你可以在PHP中使用这个正则表达式:

#^/(en|nl|ab)/#

OR匹配开头任意两个字母:

#^/[a-zA-Z]{2}/#
  • PHP允许您使用替代的正则分隔符,如#
  • [a-zA-Z]将匹配字母a-z或a-z
  • [a-zA-Z]{2}将完全匹配2个字母(a-z或a-z)
  • /[a-zA-Z]{2}/将匹配/
  • 前面和后面的2个字母(a-z或a-z)

你的表达式有问题:

  • [a-z]只匹配字符集[a-z]
  • 中的一个字符
  • $匹配字符串的结尾,如果它是uri的第一部分,那么第二个/可能不在字符串的结尾。
  • 如果您使用/作为分隔符,则正则表达式中的任何/必须通过使用/进行转义(参见下面的示例)。

使用:

^/([a-z]+)/

或者如果你只想得到它它是两个字符:

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

的例子:

$matchings = array();
$uri = '/en/user/131';
if (preg_match('/^/([a-z]+)//', $uri, $matchings))
{
    echo "Language: " . $matchings[1];
}

打印:

Language: en

最新更新