2

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

我已经在 J​​ava 中尝试过 ^1+(00)+(1|00)* ,它确实接受像 100, 100100 , 10011001.. 这样的字符串,但是它不接受 10101010 而 0 的数量是偶数。请有更好的想法来定义正则表达式的人吗?

4

2 回答 2

5

尝试这个:

"^1+(01*01*)*$" 

根据您尝试的正则表达式,我假设只允许 0 和 1。如果要允许其他字符:

"^1[^0]*(0[^0]*0[^0]*)*$"
于 2013-11-06T17:00:25.773 回答
3

I need to write a regular expression for a regular language which its strings always start with 1 and have even number of 0s.

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

/^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
于 2013-11-06T17:00:30.630 回答