日期:2014-05-17 浏览次数:20567 次
需求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个数字 不知道说的 对不对。。。
Regex reg = new Regex(@"^(?:(?!\d{4}).)*(\d{4})(?:(?!\1).)*\1");