我尝试在C#中创建一个正则表达式,只允许字符串超过3个字符但是如果它以' sch'它应该具有6的最小长度,并且如果它始于' st'或者' ch'它应该具有最小长度5。
第二部分是轻松的,但第一部分(所有其他部分长度为3)更复杂:
"(^(SCH).{3})|(^(ST).{3})|(^(CH).{3})|^(!SCH).{3}"
感谢您的帮助!
答案 0 :(得分:3)
好像你想要这样的东西,
@"^SCH.{3,}|^(?:ST|CH).{3,}|^(?!S?CH|ST).{3,}"
{3,}
中的 .{3,}
会重复上一个.
(匹配任何字符)3次或更多次的令牌。
^(?!S?CH|ST).{3,}
如果字符串不以SCH
或ST
或CH
开头,则仅在字符串至少包含三个字符时匹配这些字符串。
答案 1 :(得分:2)
我个人不会使用正则表达式。只需使用标准的string
操作。
bool IsValid(string str)
{
if(str.StartsWith("st") || str.StartsWith("ch"))
return str.Length >= 5;
if(str.StartsWIth("sch"))
return str.Length >= 6;
return str.Length > 3;
}