【问题标题】:Digits Regular Expression Validator数字正则表达式验证器
【发布时间】:2012-01-27 17:08:48
【问题描述】:

我需要一个正则表达式验证

numeric digits grouped as X-XXXXX-XXX-X

有人可以帮忙吗?

【问题讨论】:

  • 对于每个 X,您将其替换为 [0-9] 就完成了?!

标签: asp.net .net regex


【解决方案1】:
Regex reg =  new Regex("\b[0-9]\-[0-9]{5}\-[0-9]{3}\-[0-9]\b");

【讨论】:

    【解决方案2】:

    这是我用来检查用户输入的社会安全号码的:

    Public Shared Function CheckSSNFormat(ByVal text As String) As Boolean
        Dim digits As String = Regex.Replace(text, "[^0-9]", "")
        Return digits.Length = 9
    End Function
    

    它不会检查它们是否以特定格式输入,但这可能会更好,具体取决于您的实际需要 - 所以我想我会给您另一种选择,以防万一。

    上面只是删除了除数字之外的所有内容,如果有 9 个数字(有效的 SS#),则返回 true。这确实意味着一些愚蠢的用户可以输入类似的内容:hello123456789,它会接受它为有效的,但这对我来说很好,我宁愿这样做也不愿仅仅因为我正在寻找 123-45-6789 而不接受 123456789 .

    稍后我用它来保存到我的数据库中:

    Public Shared Function FormatSSNForSaving(ByVal text As String) As String
        If text = "" Then text = "000-00-0000"
        Return Regex.Replace(text, "[^0-9]", "")
    End Function
    

    这在我想显示值的任何时候(实际上我用这个作为电话号码,结果我从不显示 SS# 所以没有它的功能):

    Public Shared Function FormatPhoneForDisplay(ByVal text As String) As String
        If text.Length <> 10 Then Return text
        Return "(" & text.Substring(0, 3) & ") " & text.Substring(3, 3) & "-" & text.Substring(6, 4)
    End Function
    

    【讨论】:

      【解决方案3】:

      (^\d{1}-\d{5}-\d{3}-\d{1}$),应该可以。

      【讨论】:

        【解决方案4】:
        [0-9]-[0-9]{5}-[0-9]{3}-[0-9]
        

        如果需要,您还可以使用圆括号来提取数字:

        ([0-9])-([0-9]{5})-([0-9]{3})-([0-9])
        

        并在 Regex.Replace() 函数中使用 $1 $2 等获取值

        【讨论】:

          【解决方案5】:
          Regex pattern = new Regex("\b\d-\d{5}-\d{3}-\d\b");
          
          \b - word boundary
          \d - digit
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-08
            • 1970-01-01
            • 2013-08-04
            • 1970-01-01
            • 2017-03-25
            相关资源
            最近更新 更多