正则表达式之间的范围

时间:2017-12-22 23:37:06

标签: regex expression

我查了一下,但没找到合适的正则表达式。我尝试仅匹配数字(8-32)并尝试了一些不成功的组合,包括(Regex regex = new Regex("[8-9]|[10-29]\\d",RegexOptions.IgnoreCase | RegexOptions.Singleline);)。这只让我达到了8-29,然后我迷路了。

我知道如果我只是创建一个if语句,有一种更好更简单的方法,但是我从来没有学过这样做的事情。 : - )

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

使用正则表达式检查数字是否在范围内是个坏主意。正则表达式只关心字符串中的字符,而不是每个字符的值代表什么。正则表达式引擎不知道2中的23实际上意味着20。对此,它与任何其他2相同。

您可以编写一个高度复杂的正则表达式来执行此操作,但不要

假设您正在使用C#,只需将字符串转换为像这样的整数

var integer = Convert.ToInt32(yourString);

然后用if语句检查它是否在范围内:

if (integer >= 8 && integer <= 32) {

}

如果您的号码是较大字符串的一部分,然后,您可以使用正则表达式提取数字,将其转换为int,并使用if检查。< / p>

答案 1 :(得分:1)

作为带有解释的正则表达式测试的参考,我建议你https://regexr.com/ 根据您的需要:8-32,您需要一个类似

的模式

[8-9] | [1-2] [0-9] | 3 [0-2]

这样你就会得到8或9或10到29或30到32之间的每个数字