c# - 带有数字和特殊字符但没有字母的正则表达式

标签 c# regex

我正在制作一个正则表达式,它接受任何小数点 (0-9)、+、* 或 # 但不应接受任何字母 (a-z) 的输入。

所以数字像

  • #192#
  • *31#+32475728966
  • 0479266315
  • +32495959511

应该被接受。

当字符串中有任何字母时,正则表达式无效。

  • #192#abbef
  • a0479266315

这是我到目前为止的正则表达式:

private const string PhoneNumberRegex = "((\\d)|(\\*)|(\\#)|(\\+))?";

private bool IsValid(inputString)
{
    // Accept * # + and number
    Match match = Regex.Match(inputString, PhoneNumberRegex, RegexOptions.IgnoreCase);
    return match.Success;
}

但是这个正则表达式也在#192#abbef 上返回 true

我该如何解决这个问题?

最佳答案

你可以使用这个:

private const string PhoneNumberRegex = @"^[0-9*#+]+$";

其中 ^$ 是字符串开始和结束的 anchor 。

注意:不需要 RegexOptions.IgnoreCase

关于c# - 带有数字和特殊字符但没有字母的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705728/

相关文章:

c# - Linq to DataTable - 无法转换 DBNull

c# - 为什么 EF7/Core 插入重复记录?

java - java 验证电子邮件格式

javascript - 使用 JavaScript 从完整路径获取不带 GET 参数的文件名?

c# - C#中的double(C++)是什么?

c# - DisplayMember 在 DataSource=null 上重置

c# - Java 和 .NET 之间的正则表达式 'matches' 不同

javascript 正则表达式不工作 : atleast one 0-9, 一个 a-z,一个 A-Z,一个来自 $\-_。 +!*'()

javascript - 正则表达式替换失败,我不明白原因?

c# - 向遵守 XSD 的 XmlDocument 添加新元素