c# – 6位int的正则表达式,不能是连续的或重复的数字?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 6位int的正则表达式,不能是连续的或重复的数字?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1794字,纯文字阅读大概需要3分钟。
内容图文
![c# – 6位int的正则表达式,不能是连续的或重复的数字?](/upload/InfoBanner/zyjiaocheng/758/a550d42f07684b69a8e2dbf0207affc7.jpg)
我试图得到一个正则表达式,检查以确保提供的int是6位数,它不是顺序的,也不包含所有重复的数字,无论是按升序还是降序.我真的不在乎正则表达式是否返回非允许数字的匹配项,或者如果允许则返回原始数字的匹配项.
所以例如所有这些数字都是我不需要通过正则表达式验证的:
- 123456
- 654321
- 069
- 456789
- 2435
- 444444
虽然这些数字会通过:
- 044346
- 666605
- 042004
- 678853
谢谢.
编辑:出现正则表达式不适合这个.很多很好的答案和多个是正确的,所以我只是跟谁先回答,谢谢大家!
解决方法:
正则表达式可能不是最佳选择,但它可以通过以下方式完成:
^
# fail if...
(?!
# repeating numbers
(\d) \1+ $
|
# sequential ascending
(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5} \d $
|
# sequential descending
(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5} \d $
)
# match any other combinations of 6 digits
\d{6}
$
与/ x标志或(?x)一起使用以保持可读性.
您也可以使用紧凑形式(不推荐):
^(?!(\d)\1+$|(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5}\d$|(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5}\d$)\d{6}$
用法示例(ideone):
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string re = @"(?x)
^
# fail if...
(?!
# repeating numbers
(\d) \1+ $
|
# sequential ascending
(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5} \d $
|
# sequential descending
(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5} \d $
)
# match any other combinations of 6 digits
\d{6}
$
";
string[] numbers = { "102", "111111", "123456", "654321", "123455", "321123", "111112" };
foreach (var str in numbers)
{
Console.WriteLine(str);
Console.WriteLine(Regex.IsMatch(str, re) ? "\tMatched" : "\tFailed");
}
}
}
输出:
102
Failed
111111
Failed
123456
Failed
654321
Failed
123455
Matched
321123
Matched
111112
Matched
内容总结
以上是互联网集市为您收集整理的c# – 6位int的正则表达式,不能是连续的或重复的数字?全部内容,希望文章能够帮你解决c# – 6位int的正则表达式,不能是连续的或重复的数字?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。