java - 如何在 Android Java 中合并正则表达式中的两个或多个条件?

标签 java android regex

我正在使用输入过滤器,并使用它来匹配 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/

相关文章:

regex - Bing 搜索链接到 Google 表格中的底层链接

java - 如何控制Spring Boot启动异常?

java - 不同类型的 JSON 数组解析

java - JSF页面转换错误

android - 如何在启动 Asynctask 10 秒后显示 toast

java - 调用接口(interface)时使用匿名类

android - Android 中的 google Adview - 如何在 xml 中设置禁用

regex - 用于正则表达式匹配的紧凑型Clojure代码及其在字符串中的位置

java - 使用 ArrayMap 的 Android 4.1 崩溃

c# - 如何将堆栈跟踪行拆分为命名空间、类、方法文件和行号?