这里是那种正则表达式是如何运作的
ones: ^[0-9]$ // just set the numbers -- matches 0 to 9
tens: ^[1-3]?[0-9]$ //set max tens and max ones -- matches 0 to 39
tens where max does not end in 9 ^[1-2]?[0-9]$|^[3][0-4]$ // 0 to 34
only tens: ^[1][5-9]$|^[2-3][0-9]$|^[4][0-5]$ // 15 to 45
在这里,让我们挑选一个任意数量1234年至2345年
^[1][2][3][4-9]$|
^[1][2][4-9][0-9]$|
^[1][3-9][0-9][0-9]$|
^[2][0-2][0-9][0-9]$|
^[2][3][0-3][0-9]$|
^[2][3][4][0-5]$
https://regex101.com/r/pP8rQ7/4
基本上中间系列的结局总是需要是一个直线范围,可以达到9 ,除非我们正在处理的地方,如果它不能,每当我们有一个不能从0开始的值,并且一旦我们达到一个不能以9结尾的值并提前中断并将其设置为下一个条件时,你必须向上建立它。
注意模式,因为每个地方固化。还要记住,在处理从较低到较高的地方时,可选的操作员?应该使用。
它有点复杂,但它几乎不可能设计一个定制的范围与思考。
如果您更具体,我们可以制作一个确切的示例,但通常这是如何完成的:beginning-range|middle-range|end-range
在某些情况下,您应该只需要开始或结束范围,如最小或最大不结束9.这个?意味着它是可选的范围。 (例如,在第一种情况下,它可以让我们拥有单数和双数。
所以100 - 1999年这是相当简单实际上,因为你有很多9的和0的
/^[1-9][0-9][0-9]$|^[1][0-9][0-9][0-9]$/
https://regex101.com/r/pP8rQ7/1
注意:单值不需要范围[N]我只是说他们可读性。
你能否请你更新你的问题1)你的样本输入与预期的行为2)你究竟尝试了什么以及如何3)以及当然你的编程语言。 –
我建议你看看[如何编写一个匹配IPv4的正则表达式](https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113/)。这不是一个答案(甚至是一个论坛),但是读起来很有趣,并强调了为什么你可以用正则表达式做很多事情,但是你不应该总是这样做。至于你的问题,如果数字不固定,你显然不能写一个静态正则表达式,如果你可以使用一种编程语言来建立表达式,你可以用这种语言来比较一下数字的简单方式。 –
@WiktorStribiżew尝试按照您的要求更新 – DaCh