我需要一个只接受 0-9 的数字而不接受其他数字的正则表达式。没有字母,没有字符。
我认为这会起作用:
^[0-9]
甚至
\d+
但这些都接受字符:^,$,(,)等
我认为上面的两个正则表达式都可以解决问题,但我不确定它为什么接受这些字符。
编辑:
这正是我正在做的事情:
private void OnTextChanged(object sender, EventArgs e) { if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text)) { textbox.Text = string.Empty; } }
这允许我上面提到的字符。
您的正则表达式^[0-9]匹配以数字 开头 的任何内容,包括“1A”之类的字符串。为避免部分匹配,$请在末尾附加 a:
$
^[0-9]*$
这接受任意数量的数字,包括无。要接受一位或多位数字,请将 更改*为+。要完全接受一位数字,只需删除*.
*
+
更新: 您混淆了IsMatch. 模式应该是第二个参数,而不是第一个:
IsMatch
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
注意: 在 JavaScript 中,\d等价[0-9]于 .NET,但在 .NET 中,\d默认匹配任何Unicode 十进制数字,包括像Myanmar 2) 和逻 (N’Ko 9)这样的异国情调。除非您的应用准备好处理这些字符,否则请坚持使用[0-9](或提供RegexOptions.ECMAScript标志)。
\d
[0-9]