Java 正则表达式只允许字母,不能有前导空格,并且不能为空

Java Regexp allow only letters, no leading whitespace, and cannot be empty

我正在尝试为 Android 项目编写正则表达式。这涉及的小部件是在此处找到的 MaterialEditText https://github.com/rengwuxian/MaterialEditText

此编辑文本有一种将 RegExp 验证器链接在一起的方法。到目前为止,我设法想出了这个。

"^[a-zA-Z\s]*$"

当它与此模式不匹配时,它会显示错误。我需要将另一个 addValidator 链接到它以检查编辑文本是否为空,我该怎么做?

更新

我试过这个代码

editText.addValidator(
            new RegexpValidator("Must contain letters only", "^[A-z][\sA-z]*$")).addValidator(new RegexpValidator("Cannot be blank","^$"));

当它为空时,我得到 "Must contain letters only error",当我输入任何数据时,我得到 "Cannot be blank"

看来你想要这样的东西,

"^[a-zA-Z]+(?:\s[a-zA-Z]+)*$"

此正则表达式不允许在开头或结尾有空格。 + 重复前一个标记一次或多次,其中 * 将重复前一个标记零次或多次。

https://regex101.com/r/iJ9fB2/2

  1. 您的正则表达式确实允许前导空格,但您的问题听起来不应该。
  2. 要禁止空白输入,您可以只使用 + 而不是 *,但结合针对 #1 的修复,这将不是必需的。

像这样的东西应该可以工作:^[A-z][\sA-z]*$