我想知道是否可以得到一个仅包含字母字符的正则表达式匹配的字符串
3 回答
UYOU
TA贡献1878条经验 获得超4个赞
您可以使用以下两个变体中的任何一个:
/^[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
猛跑小猪
TA贡献1858条经验 获得超8个赞
如果您需要包含非ASCII字母字符,并且您的正则表达式支持Unicode,则
\A\pL+\z
将是正确的正则表达式。
一些正则表达式引擎不支持此Unicode语法,但允许\w字母数字速记也可以匹配非ASCII字符。在这种情况下,可以通过减去以下数字和下划线来获得所有字母\w:
\A[^\W\d_]+\z
\A在字符串的开头,字符串\z的末尾匹配(^并且$在某些语言(例如Ruby)中,或者在设置了某些正则表达式选项的情况下,也匹配在行的开头/结尾)。
- 3 回答
- 0 关注
- 1250 浏览
添加回答
举报
0/150
提交
取消