正则expression式仅匹配字母字符

我想知道如果我能得到一个正则expression式,将匹配一个string,只有alpahabetic字符,单独

你可以简单地做:

 /^[Az]+$/ 
  • [Az]将匹配所有的字母(小写和大写)。
  • ^$将确保只有这些字母将被匹配。

更新:

我原来的正则expression式/^[Az]+$/将匹配Az之间A字符,包括一些非字母的答案,如下面的一些专家评论所述。

最好使用/^[AZ]+$/i/^[A-Za-z]+$/来匹配ASCII字母的inputstring。

 preg_match('/^[AZ]+$/i', "abcAbc^Xyz", $m); echo "4. "; var_dump($m); 

OUTPUT

 4. array(0) { } 

testing用例#4用于OP的评论,他希望在input中存在一个或多个字母时才匹配。 正如你在testing用例4中看到的那样匹配失败,因为在inputstringabcAbc^Xyz

请注意,上面的答案只匹配ASCII字母 ,不符合Unicode字符。

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

 \A\pL+\z 

将是正确的正则expression式。

一些正则expression式引擎不支持这种Unicode语法,但允许\w字母数字简写也匹配非ASCII字符。 在这种情况下,您可以通过从\w减去数字和下划线来得到所有的字母:

 \A[^\W\d_]+\z 

\A匹配string的开头, \z在string的末尾( ^$也匹配某些语言如Ruby的行的开始/结尾,或者如果设置了某些正则expression式选项)。

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

 /^[az]+$/ 

您可以使用以下命令使其不区分大小写:

 /^[az]+$/i 

要么:

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

在Ruby和支持括号expression式中的POSIX字符类的其他语言中,您可以简单地:

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

这将匹配所有Unicode字母语言中的字母。 十分简单。

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

[a-zA-Z]应该做得很好。

您可以参考备忘单 。