要求:我需要将InputFilter
放在EditText
上,该{@ 1}接受具有某些限制的字段:
[a-zA-Z0-9._]
@
可以或不能是第一个字符(我需要在名称后加上@作为前缀)[a-zA-Z0-9]
开头,不能以[._]
当前我正在使用:
String regEx="[@]?(([a-zA-Z0-9]{0,1})?)+[a-zA-Z0-9._]*";
但是它接受[._]
作为第一个字符。
有人可以帮我吗?
样本:
输入:-Mack->然后onTextChange
我要添加@
作为前缀,这不是必须的-> @Mack
现在,当我从每个文本删除剩余值的editText删除字符时,应该通过RegEx。
有了WiktorStribiżew的建议,我无法在@M
之后进行检测。
答案 0 :(得分:2)
模式中的([a-zA-Z0-9]{0,1})?
部分与可选字母数字字符(1次或0次)匹配1次或0次。这意味着它可以匹配一个空字符串。
这里的重点是首先匹配可选的@
,然后使用可选的模式序列:字母数字字符,后跟0+字母数字字符,.
或_
:>
@?(?:[a-zA-Z0-9][a-zA-Z0-9._]*)?
由于必须匹配整个输入,因此无需使用^
和$
锚点。
详细信息
@?
-可选的@
(?:[a-zA-Z0-9][a-zA-Z0-9._]*)?
-匹配一系列模式的可选非捕获组:
[a-zA-Z0-9]
-一个字母数字字符[a-zA-Z0-9._]*
-0个或多个字母数字字符,.
或_
。请参见regex demo。
答案 1 :(得分:1)
我认为这应该对您有所帮助:
String regEx="@?(?:[a-zA-Z0-9][a-zA-Z0-9._]*)?"