行应该是:
- 从拉丁字母开始
- 由拉丁字母、数字、点号
.和减号-组成 - 字符串应该以字母数字结尾
- 行的最小长度为 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);
你能告诉我创建正则表达式模式的正确方法吗?
请您参考如下方法:
你可以使用
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替换以匹配字符串的结尾)
