正規表現の使用が必要なのは、正規の型付き文字ではない文字列に文字が存在する場合に真/偽を返します。これは簡単なことではありませんか?Microsoft asp C#RegEx複数の予約文字をエスケープ
私はパターンがありません、私はちょうどリストにない文字が存在するかどうか知りたいです。単に通常の正規表現の世界では
私は:
[^0-9a-zA-Z~`[email protected]#$%\^ &*()_-+={\[}]|\\:;\"'<,>.?/] // <space> before the ampersand
...私は少し肥大化した知っているが、この記事のためにポイントを作る...
私はあなたが複数の予約を免れることはできない見つけます文字。 たとえば、正規表現の元= Regex.Escape( "[")+ Regex.Escape( "^")は、上にヒットしません。 "ST [前夜" または "ST ^まし" 以下は失敗のように
を:
string ss = Regex.Escape("[") + Regex.Escape("^");
Regex rx = new Regex(ss);
string s = "st^eve";
rx.IsMatch(s));
これらのいずれかの意志のように:
string ss = Regex.Escape("[") + "[0-9]";
Regex rx = new Regex(ss);
string s1 = "st^eve"; rx.IsMatch(s1));
string s2 = "st^ev0e; rx.IsMatch(s2));
string s3 = "stev0e; rx.IsMatch(s3));
しかし、これは、マイクロソフトのC#の正規表現の使用のみが失敗しない文字のエスケープです:
string ss = Regex.Escape("^");
Regex rx = new Regex(ss);
string s = "st^eve"; rx.IsMatch(s));
0を
エスケープに必要な各文字の個別のテストを開発する必要がありますか?エスケープされていない文字のテストに追加しますか?
これは他の人々がやっていることですか?
もっと良い方法があればアイデアは公開されていますか?
ありがとうございました。
'Regex.Escape(" - ")'は " - "なので、これまでのコードは回答のための良いスタートステップですが、完全な答えではありません。 –
@PMVこんにちは、ありがとう。あなたの発言を少し深く掘り下げて見ると、Regex.Escape( "[")は単に "\ ["と同じです。ですから、 "\ ["を使用すると思うでしょう。これは失敗します: 'regex reg = new Regex( "regex.Escape(") ")") ")");文字列str = "s \" t [ev0e ";'これは失敗します: 'Regex reg = new Regex( "Regex.Escape(" \ "")+ Regex.Escape( ")")+ "]") ")これがないと、 'Regex reg = new Regex( "[\"] ");'私はダムの男ではないが、これは少し不安定なようだ。たぶん、不安定な言葉が良いです。私は数を組み合わせたり、数多くのテストを組んでいます。私は私が必要なものを手に入れることができるのが分かります。 – Steve