正規表現は頭が痛くなります。誰か私のためにこれを解決できますか?
C# では、次のように呼び出して true を期待しています。
( ) と & の前の \ の影響の意味についても簡単に説明します。
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 を除く任意の 1 文字に一致する」ことを意味します。
これ(subexpression)
はグループ化と呼ばれ、内側の部分式と一致するすべてのものをキャプチャし、0 から始まる序数を割り当てます。この一致は、この構文を使用して割り当てられた序数で参照できます\0
。引数は幅広く、多数のバリエーションがあります。MSDN
のこのリファレンスから始めることができます
ノート。グループ化、\& (アンパサンドは特別な文字ではありません) を削除し、一致する数字を 8 桁に拡張するパターンを修正しました (日付が 6 桁のみで構成されている場合は、最小 6 を意味する {6,8} を設定できます)。 、最大8桁)
{6}で6桁の連続した数字を要求しました。しかし、あなたは本当に8、yyyymmddを探しています。