c# - 限制正则​​表达式的长度

标签 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 = 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/

相关文章:

python - 在Python中使用正则表达式解析电子邮件 header

java - 用于匹配不同浮点格式的正则表达式

正则表达式用可选的逗号和空格替换某个单词

c# - IObjectSet 包含 CompiledQuery 的扩展方法错误

c# - 无法将 T 转换为间隔(我自己的自定义类型)

c# - 获取上传文件的大小 C# MVC

python - 在正则表达式中包含半空格 (\u200c)

c# - 防止多个客户端使用 cookie 重播/cookie

c# - 如何模拟成员(member)提供者

java - 我可以这样做 - token=str.split (""| |",");