c# – 正则表达式重复
发布时间:2020-12-15 18:10:34 所属栏目:百科 来源:网络整理
导读:我正在使用正则表达式来检查文本行. 1,3,4,5,8,10,12,14,19,14 这里的数字用’,’分隔,应该是非内容的,小于或等于20. 而且任何数字都不应该重复. 这是我的模式. ^(?:(?:0[1-9]|[1-9]|1[0-9]|20),)*(?:0[1-9]|[1-9]|1[0-9]|20)$ 但它不能检查重复.我该怎么检
我正在使用正则表达式来检查文本行.
1,3,4,5,8,10,12,14,19,14 这里的数字用’,’分隔,应该是非内容的,小于或等于20. ^(?:(?:0[1-9]|[1-9]|1[0-9]|20),)*(?:0[1-9]|[1-9]|1[0-9]|20)$ 但它不能检查重复.我该怎么检查? 解决方法
你想做的不是那么复杂.您只需要在每个匹配的数字后检查,如果该数字再次出现在字符串中:
^(?:(0[1-9]|[1-9]|1[0-9]|20),(?!.*b1b))*(?:0[1-9]|[1-9]|1[0-9]|20)$ 看到它并测试它here on Regexr. 在C#中: string[] myStrings = { "1","1,2","01,2,6,7,9,11,13,15,16,17,18,20",02,03,04,05,06,07,08,09,20,5",20" }; Regex reg = new Regex( @"^ (?:(0[1-9]|[1-9]|1[0-9]|20),(?!.*b1b) # Fail if the before matched number occurs once more )* (?:0[1-9]|[1-9]|1[0-9]|20) $",RegexOptions.IgnorePatternWhitespace ); foreach (string myString in myStrings) Console.WriteLine("{0} {1} a valid string.",myString,reg.IsMatch(myString) ? "is" : "is not" ); Console.ReadLine(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |