让字符串是否以/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