是它的另一个.NET正则表达式的问题:)(请原谅长华夫领导到实际问题).NET正则表达式isMatch VS匹配问题
我允许用户使用简单的日期/时间宏快速输入日期(他们不想日期选择器)
例如,他们可以输入:
d +1d -2h
这会给他们今天的日期的日期时间字符串,加一天,减去两小时。
反正我创建了一个正则表达式来匹配这些的正常工作(可能不是最好的方式做到这一点,但它的作品!):
\b[DTdt](*[+-] *[1-9][0-9]* *[dDhHmMwW])*\b
,你可能已经猜到我使用正则表达式在分析它们以计算结果日期时间之前验证这些条目。起初,我使用的是这样的:
Regex rgxDateTimeMacro = new Regex(@"\b[DTdt](*[+-] *[1-9][0-9]* *[dDhHmMwW])*\b");
if(rgxDateTimeMacro.isMatch(strInput)){
...string passes...
}
然后我很快就意识到,isMatch如果有传递的字符串中的任何比赛返回true,
d +1d +1
将返回true^__^
,所以我改变它做这样的事情:
Regex rgxDateTimeMacro = new Regex(@"\b[DTdt](*[+-] *[1-9][0-9]* *[dDhHmMwW])*\b");
MatchCollection objMatches = rgxDateTimeMacro.Matches(strInput);
if (objMatches.Count > 0)
{
// to pass.. we need a match which is the same length as the input string...
foreach (Match m in objMatches)
{
if (m.Length == strInput.Length)
{
...string passes...
}
}
}
现在这工作正常,但我的问题是这是否有一个简单的方法来检查一个字符串(整个字符串)是否匹配正则表达式?我周围有谷歌,但似乎找不到明显的答案。
希望这是有道理的
皮特
UPDATE
感谢所有的快速解答,^ $的伎俩:)
(显示与正则表达式我缺乏经验^ __ ^)
+1:我想你需要通过“多线模式”选项。 – 2009-11-18 12:49:29
+1就我个人而言,我在大多数正则表达式中使用'^ $'! – stevehipwell 2009-11-18 13:11:48