我正在使用输入过滤器,并使用它来匹配 xml 中设置的正则表达式。
所以想想这个正则表达式,每次用户按下键盘上的键时它都会进行测试。
这些是应该匹配的内容: “约翰”、“约翰-欧内斯特”、“j10n”、“jo199”、“约翰-欧内斯特1”
这些不应该: “-jon”、“09john”、“aaa”、“aa”、“john-”
基本上:
它应该始终以字母字符开头(无论大小写)
它可以接受“-”字符,但只能接受一次,并且不能位于开始或结束位置
它可以接受数字,但不能在起始位置
如果前面的字符相同,则它不能接受字符,因此不能重复字符。
我只能做到这一点:^[a-zA-Z]+[a-zA-Z0-9-]?[a-zA-Z0-9]*$
任何帮助将不胜感激 问题在于,它在键入时不接受“-”字符,因为它只接受它。
最佳答案
您可以尝试以下基于前瞻的正则表达式。
^(?!.*(.)\1)[a-zA-Z]+[a-zA-Z0-9]*(?:-[a-zA-Z0-9]+)*$
关于java - 如何在 Android Java 中合并正则表达式中的两个或多个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33463660/