C# Regex:字符串长度和以模式开头的组合
我想检查字符串是否正好包含11个字符,而不是更多或更少,以及它是否以数字“09”开头,因此我的模式是:C# Regex:字符串长度和以模式开头的组合,c#,regex,C#,Regex,我想检查字符串是否正好包含11个字符,而不是更多或更少,以及它是否以数字“09”开头,因此我的模式是: Regex rg = new Regex(@"^(?=09)(?={11})"); Console.WriteLine(rg.IsMatch("09123456789")); ^(?=09)工作正常,但当我添加第二部分时,(?={11})将引发异常。正确的模式是什么?您可以在没有正则表达式的情况下实现: if (s.Length == 11 && s.StartsWith("
Regex rg = new Regex(@"^(?=09)(?={11})");
Console.WriteLine(rg.IsMatch("09123456789"));
^(?=09)
工作正常,但当我添加第二部分时,(?={11})
将引发异常。正确的模式是什么?您可以在没有正则表达式的情况下实现:
if (s.Length == 11 && s.StartsWith("09") && s.All(Char.IsDigit))
请参阅(不确定您只需要数字。如果不需要,请删除s.All(Char.IsDigit)
)
请注意,^(?=09)(?={11})
匹配字符串位置的开头(使用^
),然后检查字符串是否以09
子字符串开头,然后在字符串开头需要{11}
文字字符序列。由于09
!=<代码>{1
如果需要正则表达式,可以使用
\A09[0-9]{9}\z
或者,要匹配的不仅仅是数字:
\A09.{9}\z
在哪里
-断言字符串的开头\A
-匹配文字字符序列09
09
-匹配除LF以外的9个字符{9}
-字符串的最末端\z
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}$
演示
有效字符串的模式为什么不直接使用
^09.{9}$
?@SebastianProske denn ich habe dass nicht gewust;)请将其作为答案发布,并说明字符“$”是什么,这样我可以将您的答案标记为最佳:)$
标记行尾,如^
标记行尾。实际上,出于验证目的,使用\z
而不是$
。
new Regex(@"^09[0-9]{9}$");