Einfache Frage dieses Mal.RegEx, um festzustellen, ob eine Zeichenfolge ein bestimmtes Zeichen enthält
Ich versuche zu testen, ob eine Zeichenfolge kein Zeichen mit regulären Ausdrücken enthält. Ich dachte, der Ausdruck hätte die Form "[^ x]", wobei x das Zeichen ist, das nicht angezeigt werden soll, aber das scheint nicht zu funktionieren.
Zum Beispiel
Regex.IsMatch("103","[^0]")
und
Regex.IsMatch("103&","[^&]")
beide return true (ich würde erwarten, false).
Ich begann als \ zu entkommen "[^&]"
und dachte, vielleicht die & Bedarf mit &, aber es scheint keinen Unterschied zu machen.
Ideen? Ich nehme an, es ist etwas Kleines.
Auch ich benutze .NET, also behalte das im Hinterkopf.
Edit1:
Ich fand this, aber es scheint nicht das Problem zu beantworten, das ich habe.
Edit2:
Ich wollte Kevin und Joel ‚s Vorschläge reagieren. Diese Vorschläge wären in der Tat schneller, aber sie erreichen nicht die Flexibilität, die ich in diesem Fall brauche. Wenn Sie also diese Frage über die Suche gefunden haben, schauen Sie sich auf jeden Fall an, ob ihre Antworten Ihren Anforderungen entsprechen. In meinem Fall wird der reguläre Ausdruck an eine DataTable-Validierungsmethode übergeben, die jede Zeile durchläuft und überprüft, ob der Inhalt dieser Zeile in einer bestimmten Spalte mit der RegEx übereinstimmt, die übergeben wird. Da ich diese Methode erneut verwenden werde für einige andere Datentabellen, die validiert werden, wollte ich:
- Verwendung Regex die breiteste Palette von Validierungen zu ermöglichen, und
- Immer für eine positive Übereinstimmung (dh anstelle der Verwendung Regex.IsMatch (Zelle! (regexvariable), ich wollte immer Reyx.IsMatch (Zelle, Regexvariable) verwenden können, da die Mehrheit der DataTables, die diese Methode aufrufen, die positive Übereinstimmung anstelle der negativen verwenden wird
Hoffentlich hilft das.
Wenn Sie nur auf das Vorhandensein eines einzelnen Zeichens überprüft, können Sie viel besser ohne Regexen. Kevin hat recht: benutze .IndexOf() oder etwas einfacheres. Es wird lesbarer, klarer und schneller sein. – ruquay