我想要一个只允许从 1 到 9999 的数字的正则表达式。它应该限制所有其他字符和所有字符。我试过了^\d+$
。但它不工作
问问题
521 次
4 回答
4
如果你坚持完全在正则表达式中做这将有点难看。我唯一能想到的是:(^[1-9][0-9]{0,3}$
一个从 1 到 9 的数字,后跟从 0 到 9 的 0 到 3 个数字)。
于 2013-01-25T05:16:49.667 回答
1
你真的不需要正则表达式,
所以非正则表达式方式
string myNum = "5000";
int num;
if (Int32.TryParse(myNum, out num) && (num >= 1 && num <= 9999))
{
//condition validated
}
和
正则表达式方式
bool foundMatch = Regex.IsMatch(myNum, "^(?:[1-9][0-9]{0,3})$");
于 2013-01-25T05:16:14.740 回答
1
你想使用一个字符类。
^[1-9][0-9]{,3}$
于 2013-01-25T05:17:36.543 回答
0
您可以使用
^0*(?!\d{5,}$)(?!0+$)\d+$
但最好将字符串解析为 int 然后比较值..
遵循KISS原则
于 2013-01-25T06:06:02.770 回答