我正在尝试验证String
其中包含一个人的名字和姓氏。可接受的名称格式如下。
Bruce Schneier
Schneier, Bruce
Schneier, Bruce Wayne
O’Malley, John F.
John O’Malley-Smith
Cher
我想出了以下程序来验证字符串变量。这validateName
函数应该返回true
如果名称格式与任何提到的格式匹配。否则它应该返回false
.
import java.util.regex.*;
public class telephone {
public static boolean validateName (String txt){
String regx = "^[\\\\p{L} .'-]+$";
Pattern pattern = Pattern.compile(regx, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(txt);
return matcher.find();
}
public static void main(String args[]) {
String name = "Ron O’’Henry";
System.out.println(validateName(name));
}
}
但由于某种原因,它又回来了false
对于任何值。我在这里做错了什么?
用这个:
^[\p{L}\s.’\-,]+$
Demo: https://regex101.com/r/dQ8fK8/1 https://regex101.com/r/dQ8fK8/1
解释:
- The biggest你遇到的问题是
'
and ’
是不同的。您只能通过从文本中复制粘贴来实现该字符。
- Use
\-
代替-
in []
因为它会被误认为是一个范围。例如:[a-z]
- 您可以使用
\s
代替
用于匹配任何空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)