【问题标题】:Is [-a-z] the same as [a-zA-Z] in regular expression?[-a-z] 和正则表达式中的 [a-zA-Z] 一样吗?
【发布时间】:2011-02-22 06:56:26
【问题描述】:

从 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]。但它是什么?末尾已经有-了。

【问题讨论】:

标签: php regex codeigniter


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    不,不是。但是您的正则表达式在正则表达式末尾使用i 修饰符,表示忽略大小写。

    所以/[a-z]/i/[a-zA-Z]/ 是同一个东西

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        [a-z][a-zA-Z]不一样,但是当你做不区分大小写的搜索时,当然是一样的。 [-a-z] 只是一个连字符和小写字母 a-z,/i 使它成为小写 + 大写。

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

        来自preg_match

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            [a-zA-Z]
            

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

            同时

            [-a-z]
            

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-12-11
                • 2011-06-22
                • 1970-01-01
                • 2011-08-26
                • 1970-01-01
                • 2011-04-01
                • 2013-08-19
                • 1970-01-01
                相关资源
                最近更新 更多