C# 将限制设置为正则表达式的长度
行应为:C# 将限制设置为正则表达式的长度,c#,regex,C#,Regex,行应为: 从拉丁字母开始 由拉丁字母、数字、点符号和减号- 字符串应以字母数字结尾 行的最小长度为1 行的最大长度为20 我编写了以下Regex模式: string pattern = @"^[A-Za-z]{1}[A-Za-z0-9\-\.]{1,18}[A-Za-z0-9]{1}$"; 第三、第四、第五个条件不满足: string s1 = "E"; // Compare a string against the regular expression var isOK = ne
- 从拉丁字母开始
- 由拉丁字母、数字、点符号
和减号-
- 字符串应以字母数字结尾
- 行的最小长度为1
- 行的最大长度为20
Regex
模式:
string pattern = @"^[A-Za-z]{1}[A-Za-z0-9\-\.]{1,18}[A-Za-z0-9]{1}$";
第三、第四、第五个条件不满足:
string s1 = "E";
// Compare a string against the regular expression
var isOK = new Regex(pattern).IsMatch(s1);
你能告诉我创建正则表达式模式的正确方法吗?试试下面的方法:
^[A-Za-z]([-.A-Za-z0-9]{0,18}[A-Za-z0-9])?$
它将首先匹配单个字母字符,然后可选地匹配一系列多达18个字母、数字、句点或连字符,以字母数字结尾。如果愿意,可以在character类中转义连字符,但如果不转义,则应将其作为类中的第一个字符,以便不将其解释为范围。使连字符成为类中的最后一个字符对于某些实现是有效的
您可以使用
string pattern = @"^[A-Za-z][A-Za-z0-9.-]{0,19}(?<=[A-Za-z0-9])$";
string pattern=@“^[A-Za-z][A-Za-z0-9.-]{0,19}(?您似乎还有一个条件,字符串应该以字母数字结尾。给定模式的最小长度为3。第二个表达式的最小值应该为0。不确定最终表达式是什么。请尝试string pattern=@[A-Za-z][A-Za-z0-9.-{0,19}(?@WiktorStribiżew谢谢,但第二个条件不满足(包括拉丁字母、数字、点符号
和减号-
)Wy不允许?它确实允许它们。你能用例子说明一下吗?注意:你可以在字符串结束锚之后移动lookback,以便在不匹配的字符串中获得更好的性能。很抱歉,我不明白如何在字符串结束后移动lookback,以便获得更好的性能。请你举个例子。@“^[A-Za-z][A-Za-z0-9.-]{0,19}\z(?非常感谢您这么好的回答!理解您所写的内容非常简单。谢谢:)。
string pattern= @"^[A-Za-z][A-Za-z0-9.-]{0,19}\z(?<=[A-Za-z0-9])";