我想知道如果我能得到一个正则表达式,它将匹配一个仅具有alpahabetic字符的字符串,并且仅此一个
答案 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。