2012-08-24 146 views
0

正则表达式令我头疼,任何人都可以为我解决这个问题吗?.Net Reg Ex精确匹配

在c#中我打电话以下,并期待真实的,我必须承认我在正则表达式非常周。

关于()和(\)&之前的\影响的含义的简要解释。

var isValid = Regex.IsMatch(
    "from=20100101&to=20121231", 
    "^(from=)([0-9]{6})\\&to=([0-9]{6})$" 
); 

回答

2

这将返回true

var isValid = Regex.IsMatch("from=20100101&to=20121231",@"^from=[0-9]{8}&to=[0-9]{8}$"); 

\用来逃生否则特殊字符。所以被视为字面值而不是正则表达式语言中的意义。例如\.表示匹配一个点,而.本身是通配符,意思是“匹配\ n以外的任何单个字符”。

(subexpression)被称为分组并捕获与内部子表达式匹配的所有内容,并为其分配一个从零开始的序号。该匹配可以用使用该语法分配的序号来引用\0
该参数是宽泛的并且具有多种变化。
您可以从此开始reference on MSDN

注意。我已更正您的模式,删除分组,\ &(与号不是特殊字符),并将匹配的数字扩展为8位数字 (如果您的日期只包含6位数字,则可以设置{6,8}表示min 6,最大8位)

+0

感谢您的解释和修复。我似乎无法将多个答复标记为答案。 – Simon

+0

您可以随意给您最好的支票,随意改变主意 – Steve

3

试试这个:

^from=(\d{8})&to=(\d{8})$ 
+0

作品一种享受,谢谢。 – Simon

1

您已要求6个与{6}连续的数字。但是,你真的在​​寻找8,yyyymmdd。

+0

干得好,我错过了明显的。感谢您的反馈 – Simon