我目前有一个正则expression式,从一个文件中拉出一个16位数字,例如:
正则expression式:
Regex.Match(l,@"d{16}")
这可以很好地适用于以下几个方面:
1234567891234567
在System.Net.UnsafeNclNativeMethods.OSSOCK.recv中的ThreadAbortException
我怎样才能知道我的桌面程序是否在控制台上运行?
Windows服务无法正常工作
WindowsPrincipal.IsInRole考虑到组内的组?
虽然我怎么能在正则expression式中包含数字,例如:
1234 5678 9123 4567
和
1234-5678-9123-4567
触发从邮件dyamnically创build的ahref单击事件
如何检查NotifyIcon是否隐藏
使用Windows Temp目录的自解压zip(SFX)Windows程序安装程序的最简单方法是什么?
C# – 与if语句使用正则expression式
如果所有的组都总是4位数字:
bd{4}[ -]?d{4}[ -]?d{4}[ -]?d{4}b
可以确定分组之间的分隔符是一样的:
bd{4}(| |-)d{4}1d{4}1d{4}b
如果它总是在一起或四人组,那么用一个正则表达式来做到这一点的方式是:
Regex.Match(l,@"d{16}|d{4}[- ]d{4}[- ]d{4}[- ]d{4}")
你可以尝试像这样:
^([0-9]{4}[s-]?){3}([0-9]{4})$
这应该够了吧。
请注意:这也允许
1234-5678 9123 4567
这只是破折号或只有空格不严格。
另一个选择是只使用你正在使用的正则表达式,并在运行正则表达式之前从字符串中去除所有违规字符:
var input = fileValue.Replace("-",string.Empty).Replace(" ",string.Empty); Regex.Match(input,@"d{16}");
这是一个模式,将获得所有的数字和去掉破折号或空格。 注意它也检查以确认只有16个数字。 忽略选项是模式被注释,它不影响匹配处理。
string value = "1234-5678-9123-4567"; string pattern = @" ^ # Beginning of line ( # Place into capture groups for 1 match (?<Number>d{4}) # Place into named group capture (?:[s-]?) # Allow for a space or dash optional ){4} # Get 4 groups (?!d) # 17th number,do not match! abort $ # End constraint to keep int in 16 digits "; var result = Regex.Match(value,pattern,RegexOptions.IgnorePatternWhitespace) .Groups["Number"].Captures .OfType<Capture>() .Aggregate (string.Empty,(seed,current) => seed + current); Console.WriteLine ( result ); // 1234567891234567 // Shows False due to 17 numbers! Console.WriteLine ( Regex.IsMatch("1234-5678-9123-45678",RegexOptions.IgnorePatternWhitespace));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。