Java Regexp 只允许字母,不允许前导空格,并且不能为空



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

此编辑文本具有将正则表达式验证器链接到它的方法。到目前为止,我设法想出了这个。

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

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

更新

我试过这段代码

editText.addValidator(
            new RegexpValidator("Must contain letters only", "^[A-z][\sA-z]*$")).addValidator(new RegexpValidator("Cannot be blank","^$"));
当它为空时,我得到"

必须只包含字母错误",当我输入任何数据时,我得到"不能为空"

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

这样的事情应该有效:^[A-z][sA-z]*$

似乎你想要这样的东西,

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

此正则表达式不允许在开头或结尾使用空格。 +重复上一个令牌一次或多次,*重复上一个令牌零次或多次。

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

最新更新