Regex que sólo acepta números (0-9) y NO caracteres
Necesito un regex que acepte sólo dígitos del 0 al 9 y nada más. Ni letras, ni caracteres.
Pensé que esto podría funcionar:
^[0-9]
o incluso
\d+
pero estos aceptan los caracteres : ^,$,(,), etc
Pensé que los dos regexes anterior haría el truco y yo'no estoy seguro de por qué su aceptar esos caracteres.
EDITAR:
Esto es exactamente lo que estoy haciendo:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
Esto es permitir que los personajes que he mencionado anteriormente.
135
1
Su regex
^[0-9]
coincide con cualquier cosa que comience con un dígito, incluyendo cadenas como "1A". Para evitar una coincidencia parcial, añada un$
al final:Esto acepta cualquier número de dígitos, incluso ninguno. Para aceptar uno o más dígitos, cambie el
*
por+
. Para aceptar exactamente un dígito, basta con eliminar el*
.Actualización: Has confundido los argumentos de
IsMatch
. El patrón debería ser el segundo argumento, no el primero:CUIDADO: En JavaScript,
\d
es equivalente a[0-9]
, pero en .NET,\d
por defecto coincide con cualquier dígito decimal Unicode, incluyendo tarifas exóticas como ႒ (Myanmar 2) y ߉ (N'Ko 9). A menos que su aplicación esté preparada para manejar estos caracteres, siga con[0-9]
(o suministre la bandera RegexOptions.ECMAScript).