Skip to main content
 首页 » 编程设计

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

2024年04月17日32zhengyun_ustc

行应该是:

  • 从拉丁字母开始
  • 由拉丁字母、数字、点号.和减号-组成
  • 字符串应该以字母数字结尾
  • 行的最小长度为 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 替换以匹配字符串的结尾)