该行应为:
.
和减号-
我写了以下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);
你能告诉我创建正则表达式模式的正确方法吗?
答案 0 :(得分:2)
您可以使用
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
替换以匹配字符串的末尾)答案 1 :(得分:1)
尝试这样的事情:
^[A-Za-z]([-.A-Za-z0-9]{0,18}[A-Za-z0-9])?$
首先匹配单个字母字符,然后选择一系列最多18个字母,数字,句号或连字符,以字母数字结尾。如果您愿意,可以在字符类中转义连字符,但如果不这样做,则应将其作为类中的第一个字符,以使其不被解释为范围。将连字符设为类中的最后一个字符适用于某些实现。