[-a-z]与正则表达式中的[a-zA-Z]相同吗?

时间:2011-02-22 06:56:26

标签: php regex codeigniter

从Codeigniter中的CI_Form_validation类,我看到了这个函数:

function alpha_dash($str)
{
    return ( ! preg_match("/^([-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE;
}

我认为-之前的a-z可能意味着[a-zA-Z],但在Google中输入-a-z并不会产生任何有用的结果。

我想知道[-a-z]是否与[a-zA-Z]相同?

提前致谢。

修改

看到i后,我现在知道[-a-z]并不代表[a-zA-Z]。但它是什么?最后已经有-

7 个答案:

答案 0 :(得分:7)

没有。它的意思是“连字符或a和z之间的任何字母”。

答案 1 :(得分:7)

不,不是。但是你的正则表达式使用正则表达式末尾的i修饰符来表示忽略。

所以/[a-z]/i/[a-zA-Z]/是相同的事情

答案 2 :(得分:4)

-a-z将是连字符( - )和a和z之间的任何字母。但是后来他们在表达中再次得到了它本身是多余的。

答案 3 :(得分:2)

当您进行不区分大小写的搜索时,

[a-z][a-zA-Z]不同,当然它们是相同的。 [-a-z]只是一个连字符,小写字母为a-z,/i使其为小写+大写。

  

模式分隔符后面的“i”表示不区分大小写的搜索

来自preg_match

答案 4 :(得分:2)

除了@David和@Ryan给出的答案之外,我还想补充一点,如果你正在寻找等于[a-zA-Z]的东西,那么它将是/^[a-z]$/i其中i 1}}表示不区分大小写。

答案 5 :(得分:1)

据我所知,但我不是正则表达专家,这是不一样的。

[a-zA-Z]

表示“任何大写和小写字母字符”

[-a-z]

表示“任何减号或小写字母字符”

答案 6 :(得分:1)

[-a-z]将匹配连字符(-)或任何小写字母

[a-zA-Z]将匹配任何小写或大写字母