我需要帮助在 Java 中为以下名称编写正则表达式:
name
name`s
name name
name-name
name`s name
name`s-name
我尝试编写以下正则表达式,但它不起作用:(
String nameRegex = "[A-Za-z]+(-|,|\\s)?[A-Za-z]*";
我写了以下函数
public static boolean validateName(String val) {
logger.info("in validate number");
String numberRegex = "^[A-Za-z]+(-\\s)?[A-Za-z]+$";
if (val.matches(numberRegex)) {
logger.info("in validate name of method validate");
return true;
} else {
logger.info("in else of method validate");
return false;
}
}
它的验证是:
- 名称假 它应该是真的
- 123 真的 应该是假的
- abc022 true 它应该是 false
- abc dsf 真
- abc-dsf 真
- abc'-dsf true 它应该是 false
我给定的模式不满意。
如果我使用这个"^\p{L}+(?:[-,\s`]\p{L}+)*$"
没有空格的模式结束名称,它会返回 false。它也接受带有数字的名称。例如 abc123