C# 用于验证和从字符串中提取数据的正则表达式
我正在尝试在.NETC#中创建2个正则表达式C# 用于验证和从字符串中提取数据的正则表达式,c#,.net,regex,C#,.net,Regex,我正在尝试在.NETC#中创建2个正则表达式 多次验证用户写入的输入是否具有以下格式: 样本: /TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT 或 至少应输入1次。 中间部分:dd-mm-yyyy应为日-月-年,如1997年2月20日 在parts文本中不应该有任何/否则我接受regex将失败 第二个正则表达式是提取“组” 我试过: string test = "/TEXT;dd-mm-yyyy;TEXT/TEXT
/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT
或
至少应输入1次。
中间部分:dd-mm-yyyy应为日-月-年,如1997年2月20日
在parts文本中不应该有任何/否则我接受regex将失败
string test = "/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT";
string reguexp = "[\\/(\\w+;\\w+;\\w+)+]";
foreach (System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(test, reguexp))
{
Console.WriteLine("'{0}' found at index {1}.", match.Value, match.Index);
}
但是,它不工作,因为它会将每个字符检测为匹配,我想提取“组”/TEXT;年月日;文本
一个接一个,以便以后执行任何额外的数据处理
我试着从第二个正则表达式开始,认为一旦我有了这个正则表达式,另一个就应该更容易了
任何帮助都可以接受。
致以最诚挚的问候您应该使用以下组:
var strRegex = @"(?<date>\d{2}-\d{2}-\d{4})+";
var myRegex = new Regex(strRegex, RegexOptions.None);
var strTargetString = @"01-02-2000;15-03-2018";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
var dateString = myMatch.Groups["date"].Value;
// TODO: Check dateString is valid date (e.g. with DateTime.TryParseExact(...))
}
var stregex=@“(?\d{2}-\d{2}-\d{4})+”;
var myRegex=新正则表达式(strRegex,RegexOptions.None);
var strTargetString=@“01-02-2000;15-03-2018”;
foreach(在myRegex.Matches中匹配myMatch(strTargetString))
{
var dateString=myMatch.Groups[“date”].Value;
//TODO:检查dateString是否为有效日期(例如,使用DateTime.TryParseExact(…)
}
Regex
不是验证日期的好方法,只要想想闰年、28/29二月
等:29-02-2016
或30-03-2016
都可以,如果29-02-2017
或30-02-2016
不可以,我同意@DmitryBychenko使用Regex验证日期是不好的。您可以使用正则表达式提取各个日期并对其进行验证。如果您查看每个匹配项,则regex将使用groups属性,然后您可以提取组和其中的数据,然后检查有效日期etcI是否类似于\/\w+\d{2}-\d{2}-\d{4}\w+
应该做你需要做的事情。看看这个:谢谢,但我需要的不是验证日期,我想验证整个格式,如果日期无效,只要模式匹配就可以接受。另外,这个想法不是日期的正则表达式,而是while模式。
var strRegex = @"(?<date>\d{2}-\d{2}-\d{4})+";
var myRegex = new Regex(strRegex, RegexOptions.None);
var strTargetString = @"01-02-2000;15-03-2018";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
var dateString = myMatch.Groups["date"].Value;
// TODO: Check dateString is valid date (e.g. with DateTime.TryParseExact(...))
}