【问题标题】:How to do name validation allowing alphabet, spaces and dot in android? [duplicate]如何在android中进行允许字母、空格和点的名称验证? [复制]
【发布时间】:2018-08-18 07:05:49
【问题描述】:

我的代码无法输入。有人可以帮我吗?

public boolean isValidLastName(final String lastname){
    Pattern pattern;
    Matcher matcher;
    final String LASTNAME_PATTERN = "[a-zA-Z]+\\.?";
    pattern = Pattern.compile(LASTNAME_PATTERN);
    matcher = pattern.matcher(lasname);
    return matcher.matches();
}

【问题讨论】:

标签: java android regex


【解决方案1】:

点应该放在括号内。 使用这个:

[ .a-zA-Z]+

你也可以尝试用括号中的\w\d替换,但我不确定Java是否支持。

【讨论】:

  • 你知道包含数字的姓氏吗?
  • @Toto 哎呀,你是对的。对“字母”有错误的理解
【解决方案2】:

尝试改用这个 [a-zA-Z.\s]+ - 允许使用字母、点或空格。

【讨论】:

  • 感谢它的工作!例如:Adawiyah Abd。加里尔
  • @Adda 我们在互联网上有非常有用的资源,您下次可以在其中检查您的表达方式,因此请尝试例如regex101.com
  • 很好的验证 - 它接受除数字和 _ 之外的所有字符。有什么好处?
  • 你的正则表达式匹配很多东西,例如§§§§§@$#%^*&)(*%$#@$@#!$#$#&§.
  • @20fps Wiktor 是正确的。 \W 已经包含.(以及所有[^a-zA-Z0-9_]),因此在该正则表达式中使用. 是没有用的。该模式相当于[^\d_]。您更新后的模式更好。
【解决方案3】:

你不应该在特殊字符之前使用像 java 字符串中的双“\”,而只是将点放在括号中。 你可以随时检查你的正则表达式是如何工作的https://www.regextester.com 您可以在 doc:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

中阅读有关正则表达式模式的更多信息

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 2018-06-04
    • 2013-11-04
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2013-03-26
    相关资源
    最近更新 更多