正则表达式仅匹配字母字符

时间:2011-05-20 04:51:21

标签: regex

我想知道如果我能得到一个正则表达式,它将匹配一个仅具有alpahabetic字符的字符串,并且仅此一个

5 个答案:

答案 0 :(得分:149)

您可以使用以下两种变体中的任何一种:

/^[A-Z]+$/i
/^[A-Za-z]+$/

匹配ASCII字母的输入字符串。

  • [A-Za-z]将匹配所有字母(小写和大写)。
  • ^$将确保只会匹配这些字母表。

<强>代码:

preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);

<强>输出:

array(0) {
}

测试用例是针对OP的评论,他希望仅当>输入中存在1个或多个字母时才匹配。正如您在测试用例中看到的那样匹配失败,因为输入字符串^中有abcAbc^Xyz

注意:请注意,上面的答案仅匹配ASCII字母且与Unicode字符不匹配。如果要匹配unicode字母,请使用:

/^\p{L}+$/u

答案 1 :(得分:47)

如果您需要包含非ASCII字母字符,并且您的正则表达式支持Unicode,那么

\A\pL+\z

将是正确的正则表达式。

某些正则表达式引擎不支持此Unicode语法,但允许\w字母数字缩写也匹配非ASCII字符。在这种情况下,您可以通过从\w中减去数字和下划线来获得所有字母顺序:

\A[^\W\d_]+\z
字符串开头的

\A匹配,字符串末尾的\z ^$也匹配某些字符串的开头/结尾像Ruby这样的语言,或者如果设置了某些正则表达式选项。)

答案 2 :(得分:20)

这将匹配一个或多个字母字符:

/^[a-z]+$/

您可以使用以下方法使其不区分大小写:

/^[a-z]+$/i

或:

/^[a-zA-Z]+$/

答案 3 :(得分:12)

在Ruby和支持表达式中支持POSIX字符类的其他语言中,您可以简单地执行:

/\A[[:alpha:]]+\z/i

这将匹配所有Unicode字母语言中的alpha-chars。容易腻。

更多信息: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html

答案 4 :(得分:6)

[a-zA-Z]应该这样做。

您可以参考the cheat sheet