正则expression式仅匹配字母字符
我想知道如果我能得到一个正则expression式,将匹配一个string,只有alpahabetic字符,单独
你可以简单地做:
/^[Az]+$/
-
[Az]
将匹配所有的字母(小写和大写)。 -
^
和$
将确保只有这些字母将被匹配。
更新:
我原来的正则expression式/^[Az]+$/
将匹配A
和z
之间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]
应该做得很好。
您可以参考备忘单 。