用于定义正则语言的正则表达式



我需要为常规语言编写一个正则表达式,其字符串始终以 1 开头,并且具有偶数个 0。

我已经在 Java 中尝试过 ^1+(00)+(1|00)*,它确实接受 100、100100、10011001.. 等字符串,但它不接受10101010而 0 的数量是偶数。 请问有更好的主意来定义正则表达式吗?

试试这个:

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

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

"^1[^0]*(0[^0]*0[^0]*)*$"

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

最新更新