我有一组用逗号分隔的字符串, 喜欢:猫,狗,大象
验证的内容就像用逗号分隔的字符串一样 范围从3到6的长度。 (字符串可以是。& ^ *#$)
,即a9&,bbbb,cc,ddddddd
在上面的字符串中,由于dint进入,因此ddddddd无效 长度范围3 t0 6。
这样a9&,bbbb,ccc,a12 $%,adsdff
我经历了很多问题,堆栈中的帖子溢出了 并从中得到一些想法
^ [1-9] \ d([,] [1-9] \ d){0,3} $这是我从stackoverflow发布的问题得到的正则表达式
这只接受数字,但我需要字母数字
我厌倦了改变但是努力工作 ^ 1-9A-ZA-Z {0,3} $
你可以帮帮我吗? 并解释每个符号的含义,以便我可以从中学到更多 你这些人。感谢您发布以前问题的答案。
答案 0 :(得分:1)
[^,]
将接受所有内容但您使用的逗号作为分隔符。目前尚不清楚你的正则表达式应该给你什么,如果不长3-6的子串,长3-6的子串,既混合,又划分或者是什么。
试试这个:
Regex rx = new Regex("^(?:(?:([^,]{3,6})|(?:[^,]*))(?:,|$))*");
var matches = rx.Match("AA,BB&B,!CC,DDDDDD,EE");
foreach (Capture capture in matches.Groups[1].Captures) {
string oneCapture = capture.Value;
}
捕获只是长3-6的字符串。
答案 1 :(得分:1)
我相信你想要的是以下内容;
^([^,]{3,6},)*[^,]{3,6}$
为了打破这一点,第一个^匹配一行的开头[^,] {3,6},表示除了逗号后跟一个逗号的3到6个字符。 ()*封闭表示重复此次0次或更多次,然后最后[^,] {3,6} $部分以3到6个字符结尾,这不是逗号。
答案 2 :(得分:0)
如果您提到的正则表达式已经适用于数字,这应该可以解决问题。 ^ \ d([,] \ d){0,3} $
作为参考,我经常使用msdn引用,但它开始时有点短,也许其他人可以提供一个很好的教程。
有一些工具,如expresso,可以帮助测试和开发正则表达式。
答案 3 :(得分:0)
我认为以下表达式符合您的要求:
^(?:([^,]{3,6}),?)*$
[^,]{3,6}
部分表示“任何不是逗号,3到6次重复的字符”。这是表达的核心。括号组成一个组,允许您检索该组捕获的值。
,?
部分的意思是“逗号,零或一次”。
这些部分被非捕获组(?: ... )
包围。这意味着包含的表达式已分组,但您将无法检索由其捕获的值。该组必须应用重复字符*
,这意味着“重复前一组零次或多次”。
锚点^
和$
表示“字符串的开头”和“字符串的结尾”。它们阻止表达式仅匹配字符串的一部分。如果您在较大的字符串中搜索模式,则不需要它们。
您可能需要尝试Expresso来了解有关正则表达式的更多信息。该程序有一个分析器,用于描述表达式的各个部分。