求解释个正则表达式

yksyuan yksyuan 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在看过客的正则笔记。有些不懂,请大家帮忙解释下。谢谢



需求1:验证字符串中任意位置出现的连续四个数字在整个字符串中是否有重复,有重复为True,无重复为False。
string[] test = new string[] { "1985aaa1985bb", "bcae1958fiefadf1955fef", "atijc1944cvkd", "df2564isdjfef2564d", "abc1234def5678ghi5678jkl" };

Regex reg = new Regex(@"(\d{4})(?:(?!\1).)*\1");

foreach (string s in test)

{

richTextBox2.Text += "源字符串: " + s.PadRight(25, ' ') + "验证结果: " + reg.IsMatch(s) + "\n";

}

/*--------输出--------

源字符串: 1985aaa1985bb 验证结果: True

源字符串: bcae1958fiefadf1955fef 验证结果: False

源字符串: atijc1944cvkd 验证结果: False

源字符串: df2564isdjfef2564d 验证结果: True

源字符串: abc1234def5678ghi5678jkl 验证结果: True

*/
需求1 Regex reg = new Regex(@"(\d{4})(?:(?!\1).)*\1");
我的理解:(\d{4})4个连续的数字。(?:(?!\1).)*\1") 非捕获组 和顺序否定环视,作用就是取4个连续数字 后面的字符

\1则是反向引用,目的是取 相同的4个数字

不知道说的 对不对。。。


我的问题是,需求2:验证字符串中第一个出现的连续4个数字是否有重复,有重复为True,无重复为False。

Regex reg = new Regex(@"^(?:(?!\d{4}).)*(\d{4})(?:(?!\1).)*\1");


这条正则 不知道怎么理解
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
yksyuan
.NET社区 62,272 成员 668,968 内容