Java Regex只允许使用字母,不允许前导空格,也不能为空

时间:2015-01-22 02:09:22

标签: java android regex android-edittext

我正在尝试为Android项目编写正则表达式。与此相关的小部件是此处https://github.com/rengwuxian/MaterialEditText

中的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","^$"));

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

2 个答案:

答案 0 :(得分:2)

  1. 你的正则表达式允许使用前导空格,你的问题听起来应该不会。
  2. 要禁止空白输入,您可以使用+代替*,但结合#1的修正,这不是必需的。
  3. 这样的事情应该有效:^[A-z][\sA-z]*$

答案 1 :(得分:1)

好像你想要这样的东西,

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

这个正则表达式在开头或结尾都不会允许空格。 +重复前一个令牌一次或多次*将重复前一个令牌零次或多次。

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