【发布时间】:2012-01-27 17:08:48
【问题描述】:
我需要一个正则表达式验证
numeric digits grouped as X-XXXXX-XXX-X
有人可以帮忙吗?
【问题讨论】:
-
对于每个 X,您将其替换为 [0-9] 就完成了?!
我需要一个正则表达式验证
numeric digits grouped as X-XXXXX-XXX-X
有人可以帮忙吗?
【问题讨论】:
Regex reg = new Regex("\b[0-9]\-[0-9]{5}\-[0-9]{3}\-[0-9]\b");
【讨论】:
这是我用来检查用户输入的社会安全号码的:
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
【讨论】:
(^\d{1}-\d{5}-\d{3}-\d{1}$),应该可以。
【讨论】:
[0-9]-[0-9]{5}-[0-9]{3}-[0-9]
如果需要,您还可以使用圆括号来提取数字:
([0-9])-([0-9]{5})-([0-9]{3})-([0-9])
并在 Regex.Replace() 函数中使用 $1 $2 等获取值
【讨论】:
Regex pattern = new Regex("\b\d-\d{5}-\d{3}-\d\b");
\b - word boundary
\d - digit
【讨论】: