Java 正则表达式来定义正则语言

Java 正则表达式来定义正则语言,java,regex,regex-negation,Java,Regex,Regex Negation,我需要为一种正则语言编写一个正则表达式,它的字符串总是以1开头,并且有偶数个0 我已经在Java中尝试过^1+(00)+(1 | 00)*,它确实接受像10010010010011001这样的字符串。。然而,当0的数目为偶数时,它不接受10101010。有谁对正则表达式有更好的定义吗?试试这个: "^1+(01*01*)*$" 根据您尝试的正则表达式,我假设只允许0和1。如果要允许使用其他字符: "^1[^0]*(0[^0]*0[^0]*)*$" 我需要为一种正则语言编写一个正则表达式,它

我需要为一种正则语言编写一个正则表达式,它的字符串总是以1开头,并且有偶数个0

我已经在Java中尝试过^1+(00)+(1 | 00)*,它确实接受像10010010010011001这样的字符串。。然而,当0的数目为偶数时,它不接受10101010。有谁对正则表达式有更好的定义吗?

试试这个:

"^1+(01*01*)*$" 
根据您尝试的正则表达式,我假设只允许0和1。如果要允许使用其他字符:

"^1[^0]*(0[^0]*0[^0]*)*$"
我需要为一种正则语言编写一个正则表达式,它的字符串总是以1开头,并且有偶数个0。

这个基于前瞻性的正则表达式应该适合您:

/^1(?=(([^0]*0){2})*[^0]*$)/

/^1(?=(([^0]*0){2})*[^0]*$)/.test('10'); // false
/^1(?=(([^0]*0){2})*[^0]*$)/.test('1000000'); // true
/^1(?=(([^0]*0){2})*[^0]*$)/.test('000000'); // false

@Lourin您的答案将不接受像
“1”
“11111”
等字符串。这些字符串具有零0,但零是偶数。如果要求0的数量至少为2,则您的更改是正确的。谢谢。是0必须出现在字符串中(偶数次)。