3

ベロシティ テンプレートでユーザー エージェントを照合しようとしています。

$ua は印刷されますが、一致します! ではない。私は何を間違っていますか?

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

1 に答える 1

4

これが古いことは知っていますが、この問題の解決策は、一致に提供される正規表現が true を返すために文字列全体と一致する必要があることです。たとえば、次のようになります。

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

false を返しますが、

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

期待どおりに動作し、Windows.(...) が文字列内にある場合は true を返します。

これは少し奇妙で、今日はしばらく私を悩ませました。

PS - 正規表現にスラッシュは必要ありません!

于 2013-03-15T19:28:35.777 に答える