2013-02-17 93 views
-2

我想用这种格式编写一个表达式,例如两个字母和三个数字。 TT234如何编写正则表达式

([A-Z]2+[0-9]+) 

以上是我写的,但我得到错误。任何人都可以评论它吗?

让我重写我的问题,基本上我在.htaccess写一个重写URL参数约束

RewriteEngine On # Turn on the rewriting engine 
RewriteRule ^test/(home|member|admin)/([A-Z]{2}[0-9]{3})/(xml|json)$ localhost/username/index.php?type=$1&id=$2&format=$3 [L] 
RewriteRule ^test/.*$ localhost/username/error.php [L] 

现在经过我改变了正则表达式来([A-Z]{2}[0-9]{3})虽然它不检查,我得到这个错误xmlParseEntityRef: no name正确地参数。

+0

你在写的正则表达式?有许多不同的种类和字面上的整本书。 – 2013-02-17 16:34:49

回答

1

你的正则表达式是一个大写的ASCII字母匹配,一个或多个“2”之后至少一位数字。

如:

  • A2123456788990
  • Z20
  • 如果要明确指定2个字母,那么你不应该使用量词+,你可以使用{2}

  • 如果你写了一个“2”,那么它匹配一个字面上的“2”

  • 同为数字,如果你想匹配3个数字,写,而不是{3}+

  • 根据你的口味和你打电话的方法,你也需要Anchor你的正则表达式,否则你会得到部分匹配。

    你可以做到这一点无论与^$的开始和字符串的结尾,当你的文字只包含此字符串

    ^[A-Z]{2}[0-9]{3}$ 
    

    如果你想找到一个更大的字符串这种模式的,然后用Wordboundaries

    \b[A-Z]{2}[0-9]{3}\b 
    
+0

它现在仍然不能工作去错误页面RewriteRule^/(^ [AZ] {2} [0-9] {3} $)/(xml | json) – user236501 2013-02-17 16:46:55

+0

@ user236501,不,你已经有锚,然后不要使用我在解决方案中写的那些,我认为这是完整的模式。看起来你想用'(xml | json)'匹配文件扩展名,但是在扩展名前不匹配文件名。尝试'^ /([AZ] {2} [0-9] {3})/ [^。/] +(xml | json)$' – stema 2013-02-17 16:53:18

+0

嗨,我仍然有错误我重写它:RewriteEngine On#打开重写引擎 RewriteRule^test /(home | member | admin)/([AZ] {2} [0-9] {3})/(xml | json)$ http:// localhost/username/index .php?type = $ 1&id = $ 2&format = $ 3 [L] RewriteRule^test /.*$ http://localhost/username/error.php [L] – user236501 2013-02-18 04:27:07

1

正则表达式有不同的语法。下面是如何做你需要POSIX消耗常规Expresions什么:

[A-Z]{2}[0-9]{3} 
0

尝试这样的:

([A-Z]{2}[0-9]{3})