正则表达式:字符串长度和启动与模式的组合

时间:2016-10-18 08:47:59

标签: c# regex

我想检查字符串是否包含11个字符,不多或少,如果它以数字' 09'开头,那么我的模式是:

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

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

4 个答案:

答案 0 :(得分:2)

如果没有正则表达式,您可以实现这一目标:

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

请参阅C# demo(不确定您是否只需要数字。如果没有,请删除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 - 字符串的非常结尾。

答案 1 :(得分:1)

new Regex(@"^09[0-9]{9}$");

有效字符串的模式

答案 2 :(得分:0)

您可以使用

background-size: 280% auto;

但我建议更简单,没有正则表达式

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

答案 3 :(得分:0)

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

DEMO click me