java中如何连续限制1个以上的“与”

java中如何连续限制1个以上的“与”,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有一个字符串,它应该包含一个名称,然后是&,然后是第二个名称。 不应出现两个连续的和。最后一个字符也不应该是& 我尝试了以下代码,但这不起作用 System.out.println("45345&&345".matches("(^(?!&)(?!.*&&)[0-9&]+(?<!&))$")); System.out.println(“45345&&345.”匹配((^(?)&)(?!.&)[0-9&]+(?仅一个&在线,不以&开头

我有一个字符串,它应该包含
一个名称
,然后是
&
,然后是
第二个名称
。 不应出现两个连续的
。最后一个字符也不应该是
&

我尝试了以下代码,但这不起作用

System.out.println("45345&&345".matches("(^(?!&)(?!.*&&)[0-9&]+(?<!&))$"));

System.out.println(“45345&&345.”匹配((^(?)&)(?!.&)[0-9&]+(?仅一个
&
在线,不以
&
开头或结尾):

^[^&]+&[^&]+$
^(?:[^&]+&)+[^&]+$
可以包含多个
&
,但不能包含连续的,并且不能以
&
开头或结尾:

^[^&]+&[^&]+$
^(?:[^&]+&)+[^&]+$

在线上只有一个
&
,不以
&
开头或结尾:

^[^&]+&[^&]+$
^(?:[^&]+&)+[^&]+$
可以包含多个
&
,但不能包含连续的,并且不能以
&
开头或结尾:

^[^&]+&[^&]+$
^(?:[^&]+&)+[^&]+$

@ndn我试过了,但它也不起作用。它匹配行,只要它们只有一个
&
,并且不以
&
开头或结尾。这不是你想要的吗?好的,我明白你的意思了@ndn让我检查一下问题,展示一些匹配和不匹配字符串的示例。它起作用了@ndn@ndn我有尝试过这个,但它也不起作用它匹配行,只要它们只有一个
&
,并且不以该
&
开头或结尾。这不是你想要的吗?好的,我明白你的意思了@ndn让我检查一下这个问题,以显示一些匹配和不匹配字符串的示例。它起作用了。@ndn请检查第二项针对
abc&def&&ghi&jkl
的d正则表达式。子句
(?:[^&]*&)+
允许导致不需要的匹配的
[^&]
的零。我认为
^(?[^&]++[^&]+$
可以完成此任务。请针对
abc&def&&ghi&jkl
检查第二个正则表达式。子句
(?:[^&&&]*&]+
允许零的
[^&]
导致不需要的匹配。我认为
^(?:[^&]+&)+[^&]+$
可以完成这项工作。