2017-09-13 1 views
0

Mein aktueller regex:Disallow ein folgendes Zeichen in einzelner Position

(>|<)\s*[0-9]+\s*(kW|mW|KW|MW|kw|mw)[^h]*.* 

Eingabetext übereinstimmen soll:

> 8000 kW 
> 8000 kW h 
> 8000 kWa 

Eingabetext, die nicht übereinstimmen sollten:

> 8000 kWh 

Die Das Muster erzeugt in allen Fällen die korrekten Ergebnisse, außer dass es immer noch das folgende "h" akzeptiert. Wie kann ich diesen Regex reparieren?

+0

Versuchen [ '[><] \ s * [0-9] + \ s * (?: kW | mW | KW | MW | kw | mw) (?! h) '] (http://regexstorm.net/tester?p=%5b%3e%3c%5d%5cs*%5b0- 9% 5d% 2b% 5cs *% 28% 3f% 3akW% 7cmW% 7cKW% 7cMW% 7ckw% 7cmw% 29% 28% 3f! H% 29 & i =% 3e + 8000 + kW% 0d% 0a% 3e + 8000 + kW + h% 0d% 0a% 3e + 8000 + kWa% 0d% 0a% 3e + 8000 + kWh). Verwenden Sie 'Regex.IsMatch', um nur zu prüfen, ob das Muster teilweise mit einer Zeichenfolge übereinstimmt? –

Antwort

0

Verwenden Sie eine negative Vorschau zusätzlich zu Groß- und Kleinschreibung Flagge für einen kürzeren, viel sauberen regex gesetzt wird:

(?i)[<>]\s*[0-9]+\s*([km]w)(?!h).* 
+0

Wenn OP die Regex in 'Regex.IsMatch' verwendet, ist das'. * 'Redundant. –

+0

Ich bin mir nicht sicher über diese Hypothese. – revo

Verwandte Themen