我需要对
进行正则表达式验证numeric digits grouped as X-XXXXX-XXX-X
任何人都可以帮忙吗?
答案 0 :(得分:2)
Regex reg = new Regex("\b[0-9]\-[0-9]{5}\-[0-9]{3}\-[0-9]\b");
答案 1 :(得分:1)
(^\d{1}-\d{5}-\d{3}-\d{1}$)
,这应该做。
答案 2 :(得分:1)
以下是我用于检查用户输入的社会安全号码的信息:
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并且它会接受它有效,但这对我来说没问题,我宁愿这样做也不要接受123456789因为我只是在寻找123-45-6789
稍后我用它来保存到我的数据库:
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 :(得分:0)
[0-9]-[0-9]{5}-[0-9]{3}-[0-9]
如果需要,您也可以使用圆括号来提取数字:
([0-9])-([0-9]{5})-([0-9]{3})-([0-9])
并在Regex.Replace()函数
中获取$ 1 $ 2等的值答案 4 :(得分:0)
Regex pattern = new Regex("\b\d-\d{5}-\d{3}-\d\b");
\b - word boundary
\d - digit