我需要为常规语言编写正则表达式,其字符串始终以1开头,偶数为0。
我已经尝试过Java中的^ 1 +(00)+(1 | 00)*并且它接受100,1100100,10011001等字符串但是它不接受10101010而0的数量甚至。请问有谁更好地定义正则表达式?
答案 0 :(得分:5)
试试这个:
"^1+(01*01*)*$"
我假设根据您尝试的正则表达式,只允许0和1。如果您想允许其他字符:
"^1[^0]*(0[^0]*0[^0]*)*$"
答案 1 :(得分: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