行应该是:
- 从拉丁字母开始
- 由拉丁字母、数字、点号
.
和减号-
组成 - 字符串应该以字母数字结尾
- 行的最小长度为 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
替换以匹配字符串的结尾)
关于c# - 限制正则表达式的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275308/