Java 验证正则表达式子匹配
我有一个词:Java 验证正则表达式子匹配,java,regex,match,Java,Regex,Match,我有一个词: E012PH345AN678T 以及以下正则表达式: ^E(.*)(PH(.*)AN(.*)PH(.*))T$ 这将触发以下匹配: 1:012 2:PH345AN 3:345 4: 5:678 有没有办法确保子匹配项(1,3,4,5)在同一正则表达式(a-la(\1\3\4\5)\d{3,})中至少包含3位数字?正则表达式将在我无法控制太多的Java环境中运行 更新-作为一个附加示例,此EXY2PHZ45ANUWT也应匹配。。。我只需要在全局级别的匹配中找到2,4,5。
E012PH345AN678T
^E(.*)(PH(.*)AN(.*)PH(.*))T$
- 1:012
- 2:PH345AN
- 3:345
- 4:
- 5:678
(\1\3\4\5)\d{3,}
)中至少包含3位数字?正则表达式将在我无法控制太多的Java环境中运行
更新-作为一个附加示例,此EXY2PHZ45ANUWT
也应匹配。。。我只需要在全局级别的匹配中找到2,4,5
。这些数字只是我需要的一个简单例子。。。可以是字母或其他东西
谢谢。您可以使用这个基于前瞻的正则表达式:
^(?=(\D*\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
(?=\d{3})
是一种前瞻性方法,可确保输入中至少有3位数字
在Java中:
^(?=(\\D*\\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
您可以使用这个基于前瞻的正则表达式:
^(?=(\D*\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
(?=\d{3})
是一种前瞻性方法,可确保输入中至少有3位数字
在Java中:
^(?=(\\D*\\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
将正则表达式修改为
^(?=.*\d.*\d.*\d.*)E(.*)?(PH(.*)?AN|AN(.*)?PH)(.*)?T$
当且仅当输入至少有三位数字时,这将与输入匹配,无论它们是在哪个子组中捕获的。将正则表达式修改为
^(?=.*\d.*\d.*\d.*)E(.*)?(PH(.*)?AN|AN(.*)?PH)(.*)?T$
这将匹配输入,当且仅当输入至少有三位数字时,无论它们被捕获在哪个子组中。你的意思是这样吗?你的意思是这样吗?\d{3}将精确匹配三位数字。要有3个或更多,请使用\d{3,}。@mazaneicha:否,相同的正则表达式也将匹配
E01234PH345AN678T
(?=\d{3})
是为了确保至少有3个数字,也可以有3个以上。我希望全局级别至少有3个数字。不是每个匹配都有3个数字。我已经更新了帖子。EXY2PHZ45ANUWT也应匹配…\d{3}将精确匹配3位数字。要有3个或更多,请使用\d{3,}。@mazaneicha:否,相同的正则表达式也将匹配E01234PH345AN678T
(?=\d{3})
是为了确保至少有3个数字,也可以有3个以上。我希望全局级别至少有3个数字。不是每个匹配都有3个数字。我已经更新了帖子。EXY2PHZ45ANUWT也应该是匹配的。。。