我四处看看,但没有找到一个合适的正则表达式。我试图只匹配数字(8-32),并尝试了一些组合不成功,包括(Regex regex = new Regex("[8-9]|[10-29]\\d",RegexOptions.IgnoreCase | RegexOptions.Singleline);)。这只让我达到8-29然后我迷路了。
我知道,如果我只创建一个if语句,还有一个更好、更容易的方法,但我永远不会学到任何这样做的方法。:-)
任何帮助都将不胜感激。
发布于 2017-12-22 23:44:45
使用正则表达式检查一个数字是否在某个范围内是个坏主意。Regex只关心字符串中的字符,而不是每个字符的值。regex引擎不知道2在23中实际上意味着20。对于它来说,它和任何其他2都是一样的。
您可能可以编写一个非常复杂的正则表达式来完成这个任务,但是不要。
假设您使用的是C#,只需将字符串转换为如下所示的整数
var integer = Convert.ToInt32(yourString);然后用if语句检查它是否在范围内:
if (integer >= 8 && integer <= 32) {
}如果您的数字是较大字符串的一部分,则可以使用regex提取出该数字,将其转换为int,并使用if进行检查。
发布于 2017-12-22 23:53:24
作为使用解释的regex测试的参考,我建议您使用https://regexr.com/并满足您的需要: 8-32,您将需要这样的模式
8-9\x{e76f}1-2\x{e76f}30-2
这样你就可以得到8或9或10到29或30到32之间的每一个数字。
https://stackoverflow.com/questions/47948503
复制相似问题