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

Php 用于在字符串开头检测/en/或/nl/的正则表达式,php,regex,Php,Regex,让我们看看字符串是否以/en/或/nl/或/ab/开头,换句话说: /后跟两个字母,以/ 在字符串的末尾可能有一些东西,但这并不重要 示例: /nl/ -> match /marketing/ -> no match /marketing.html -> no match /12/ -> no match 我试过:^/[a-z]/$但我认为我的思路不对 您可以在PHP中使用此正则表达式: #^/(en|nl|ab)/# 或匹配开头的任意两个字母: #^/[a-zA-Z

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

/后跟两个字母,以/

在字符串的末尾可能有一些东西,但这并不重要

示例:

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

我试过:^/[a-z]/$但我认为我的思路不对

您可以在PHP中使用此正则表达式:

#^/(en|nl|ab)/#
或匹配开头的任意两个字母:

#^/[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}/
    将精确匹配前面和后面的两个字母(a-Z或a-Z)
    /

您的表达有问题:

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

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

^\/([a-z]{2})\/
例如:

$matchings = array();

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

Language: en

有什么特别的原因让你用octothorpes封装你的正则表达式吗?没有特别的原因,也可能是
~^/[a-zA-Z]{2}/~
。我的想法是使用任何对我来说同样随意的东西。既然代码已经在markdown中标记为代码,为什么还要有任何东西呢?或者,如果有什么问题,因为问题被标记了,那么引号不是更有意义吗?是的,在PHP中,regex总是用在引号中,比如
“#^/[a-zA-Z]{2}/#”
Language: en