-2

我想要一个只允许从 1 到 9999 的数字的正则表达式。它应该限制所有其他字符和所有字符。我试过了^\d+$。但它不工作

4

4 回答 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 回答