为什么 matches.find() 对于正则表达式“[a-zA-Z]*”是正确的,尽管我没有任何字母? [重复]

问题描述 投票:0回答:1

我正在尝试检查电话号码是否包含任何字母。 但我不明白,为什么以下不起作用。

String phoneNumber = "(223) 456-7890"
Pattern letterPattern = Pattern.compile("[a-zA-Z]*");
Matcher matcher = letterPattern.matcher(phoneNumber);

为什么我对以下内容的理解是正确的?

matcher.find()

我希望如此

matcher.find()

是假的,不是真的。

是因为空间的原因吗?如果是,为什么这里会识别空间?

在 regex101.com 中尝试相同的操作,我得到 regex101 的示例 (示例中的第二行)

java regex find space letter
1个回答
-1
投票

[a-zA-Z]*
匹配 0-n 个字母。由于字符数为零,因此正则表达式匹配。如果您要查找至少一个字符,请使用
[a-zA-Z]+
来代替,它匹配 1-n 个字母。

© www.soinside.com 2019 - 2024. All rights reserved.