RegEx 让我头疼,谁能帮我解决这个问题?
在 c# 中,我正在调用以下内容并期待正确,我必须承认我在正则表达式方面非常周到。
还简要解释了 ( ) 和 & 之前的 \ 的影响。
var isValid = Regex.IsMatch(
"from=20100101&to=20121231",
"^(from=)([0-9]{6})\\&to=([0-9]{6})$"
);
试试这个:
^from=(\d{8})&to=(\d{8})$
这将返回 true
var isValid = Regex.IsMatch("from=20100101&to=20121231",@"^from=[0-9]{8}&to=[0-9]{8}$");
\
用于转义其他特殊字符。So 是按其字面值处理的,而不是按其在正则表达式语言中的含义处理。例如\.
,表示匹配一个点,而 a.
本身是通配符,表示“匹配除 \n 之外的任何单个字符”。
这(subexpression)
称为分组并捕获与内部子表达式匹配的所有内容并为其分配一个从零开始的序数。可以使用使用此语法分配的序号来引用此匹配\0
。参数很广泛并且有很多变化。
你可以从MSDN 上的这个参考开始
笔记。我已经更正了您的模式,删除了分组、\&(与号不是特殊字符)并将匹配的数字扩展为 8 位数字(如果您的日期仅由 6 位数字组成,那么您可以设置 {6,8} 表示 min 6 , 最多 8 位数字)
您使用 {6} 要求输入 6 个连续数字。但是,您确实在寻找 8,yyyymmdd。