2012-05-17 2 views
2

Я пытаюсь выполнить совпадение с пользовательским агентом в скоростных шаблонах.Как использовать метод Java String.matches (str) в шаблонах Velocity

$ ua распечатывает, но соответствует! не. Что я делаю не так?

#set($ua = $request.getHeader('User-Agent')) 
<p>$ua</p> 
#if($ua.matches('/Windows.(NT|XP|ME|9)/')) 
<p>Matches!</p> 
#end 

ответ

2

Я знаю, что это старое, но решение этой проблемы заключается в том, что регулярное выражение при условии, чтобы спички должно соответствовать ВСЕЙ строке, чтобы вернуть истинные. Так, например:

$ua.matches('Windows.(NT|XP|ME|9)') 

возвращает ложь, но

$ua.matches('.*Windows.(NT|XP|ME|9).*') 

будет вести себя, как вы ожидаете, возвращает истину, если Windows, (...) в строке..

Это немного странно и на самом деле застопорило меня сегодня.

PS - в регулярном выражении не требуется косая черта!

+0

В качестве альтернативы, введите заголовок req и сопоставьте вместе: '#if ($ req.getHeader (« User-Agent »). Matches ('. * Trident. *'))' – Underverse