正则表达式匹配未知长度的模式 0123456789
Regex to match the pattern 0123456789 with unknown length
我想匹配以下模式:0123456789
问题是我事先不知道字符串的长度,但我知道它是从零开始的。所以可能的字符串是:
- (空字符串也有效)
01234
0123456789
01234567890123
012345678901234567890123
我如何才能将其与正则表达式匹配?
谢谢!
编辑:
需要匹配从头到尾的整个字符串
^(0(1(2(3(4(5(6(7(8(9)?)?)?)?)?)?)?)?)?)+$
在这里测试:https://regex101.com/
Rodolfo 的回答很棒。但是,还有一些需要改进的地方!
正则表达式
使用此模式通过的所有测试用例。
^((0(1(2(3(4(5(6(7(8(9)?)?)?)?)?)?)?)?)?)?)+$
我认为最简单的方法是使用 or 运算符。
(0123456789|012345678|01234567|0123456|012345|01234|0123|012|01|0)+
看来您只需要对 前一段时间的回答进行简单改编即可:
^(?!.*(?:0[^1]|1[^2]|2[^3]|3[^4]|4[^5]|5[^6]|6[^7]|7[^8]|8[^9]|9[^0])|[1-9])\d*$
主要区别是负先行中的另一个交替....|[1-9]
以防止除前导零之外的任何内容。然后我们将 \d{30}
替换为 \d*
以匹配空字符串。
我想匹配以下模式:0123456789
问题是我事先不知道字符串的长度,但我知道它是从零开始的。所以可能的字符串是:
- (空字符串也有效)
01234
0123456789
01234567890123
012345678901234567890123
我如何才能将其与正则表达式匹配?
谢谢!
编辑:
需要匹配从头到尾的整个字符串
^(0(1(2(3(4(5(6(7(8(9)?)?)?)?)?)?)?)?)?)+$
在这里测试:https://regex101.com/
Rodolfo 的回答很棒。但是,还有一些需要改进的地方!
正则表达式
使用此模式通过的所有测试用例。
^((0(1(2(3(4(5(6(7(8(9)?)?)?)?)?)?)?)?)?)?)+$
我认为最简单的方法是使用 or 运算符。
(0123456789|012345678|01234567|0123456|012345|01234|0123|012|01|0)+
看来您只需要对
^(?!.*(?:0[^1]|1[^2]|2[^3]|3[^4]|4[^5]|5[^6]|6[^7]|7[^8]|8[^9]|9[^0])|[1-9])\d*$
主要区别是负先行中的另一个交替....|[1-9]
以防止除前导零之外的任何内容。然后我们将 \d{30}
替换为 \d*
以匹配空字符串。