Regex:字符串长度和以模式开头的组合

本文关键字:模式 开头 组合 字符串 Regex | 更新日期: 2023-09-27 18:13:25

我想检查字符串是否正好包含11个字符,而不是更多或更少,以及它是否以数字"09"开头,所以我的模式是:

Regex rg = new Regex(@"^(?=09)(?={11})");
Console.WriteLine(rg.IsMatch("09123456789"));

^(?=09)工作正常,但当我添加第二部分(?={11})时,将引发异常。什么是正确的模式?

Regex:字符串长度和以模式开头的组合

您可以在没有正则表达式的情况下实现这一点:

if (s.Length == 11 && s.StartsWith("09") && s.All(Char.IsDigit))

请参阅C#演示(不确定您是否只需要数字。如果没有,请删除s.All(Char.IsDigit)(。

请注意,^(?=09)(?={11})匹配字符串的起始位置(与^匹配(,然后检查字符串是否以09子字符串开始,然后在字符串的起始处需要{11}文字字符序列。自09以来,这不起作用!={1

如果你需要正则表达式,你可以使用

'A09[0-9]{9}'z

或者,不仅匹配数字:

'A09.{9}'z

其中

  • 'A-断言字符串的开头
  • 09-匹配文字字符序列09
  • .{9}-匹配LF以外的9个字符
  • 'z-字符串的末尾
new Regex(@"^09[0-9]{9}$");

有效字符串的模式

您可以使用

Regex rg = new Regex(@"^09.{9}$", RegexOptions.Compiled);
bool CheckStringRegex(string str)
{
    return rg.IsMatch(str);
}

但我建议用更简单的方法,不使用正则表达式

bool CheckString(string str)
{
    return str.Length == 11 && str.StartsWith("09");
}

^(?=09)'w{11}$怎么样?

DEMO点击我