我查了一下,但没找到合适的正则表达式。我尝试仅匹配数字(8-32)并尝试了一些不成功的组合,包括(Regex regex = new Regex("[8-9]|[10-29]\\d",RegexOptions.IgnoreCase | RegexOptions.Singleline);)
。这只让我达到了8-29,然后我迷路了。
我知道如果我只是创建一个if语句,有一种更好更简单的方法,但是我从来没有学过这样做的事情。 : - )
非常感谢任何帮助。
答案 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之间的每个数字