[英]Set limit to length of Regular expression
该行应该是:
.
和减号-
我写了以下正则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);
你能告诉我创建正则表达式模式的正确方法吗?
您可以使用
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}\z(?<=[A-Za-z0-9])";
细节 :
^
- 字符串的开头 [A-Za-z]
- 一封信 [A-Za-z0-9.-]{0,19}
- 0到19个字母,数字或.
或-
符号 (?<=[A-Za-z0-9])
- 之前应该有一个字母数字.... $
- 字符串的结尾(最好用\\z
替换以匹配字符串的最后一端) 尝试这样的事情:
^[A-Za-z]([-.A-Za-z0-9]{0,18}[A-Za-z0-9])?$
它将首先匹配单个字母字符,然后选择一系列最多18个字母,数字,句点或连字符,以字母数字结尾。 如果您愿意,可以在字符类中转义连字符,但如果不这样做,则应将其作为类中的第一个字符,以使其不被解释为范围。 将连字符设为类中的最后一个字符适用于某些实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.