Regex:字符串长度和以模式开头的组合
本文关键字:模式 开头 组合 字符串 Regex | 更新日期: 2023-09-27 18:13:25
我想检查字符串是否正好包含11个字符,而不是更多或更少,以及它是否以数字"09"开头,所以我的模式是:
Regex rg = new Regex(@"^(?=09)(?={11})");
Console.WriteLine(rg.IsMatch("09123456789"));
^(?=09)
工作正常,但当我添加第二部分(?={11})
时,将引发异常。什么是正确的模式?
您可以在没有正则表达式的情况下实现这一点:
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点击我