2017-09-13 72 views
0

我现在的正则表达式:不允许一个下面的字符

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

输入文字应符合:

> 8000 kW 
> 8000 kW h 
> 8000 kWa 

输入的文本不应该匹配:

> 8000 kWh 

的模式在所有情况下都会产生正确的结果,除了它仍然接受以下“h”。我该如何修复这个正则表达式?

+0

尝试['[><] \ S * [0-9] + \ S *(?:千瓦|毫瓦| KW |兆瓦|千瓦| MW)(?!1H)'](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 +千瓦%0D%0A%3E + 8000 +千瓦+ H%0D 0A%%3E + 8000 + KWA%0D 0A%%3E + 8000 +千瓦时)。你是否正在使用'Regex.IsMatch'来检查模式是否与部分字符串匹配? –

回答

0

使用除了负先行到不区分大小写的标志被设定为更短,更清洁的正则表达式:

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

如果OP在'Regex.IsMatch'内使用正则表达式,'。*'是多余的。 –

+0

我不确定这个假设。 – revo