2010-07-29 88 views
0

我在PHP下面的代碼:的preg_match以相當於.NET

if (preg_match('@^[a-z0-9/._-][email protected]', $script) 
     && !preg_match('@([.][.])|([.]/)|(//)@', $script)) 

我正在做,對於if聲明斷言返回的字符串js/core.js真正的假設。

我該如何將其轉換爲C#?啞翻譯如下:

if(Regex.IsMatch(script,"@^[a-z0-9/._-][email protected]") 
    && !Regex.IsMatch(script,"@([.][.])|([.]/)|(//)@")) 

,但我懷疑是@符號纔有意義吧,我不能去的底部有關。 .NET正則表達式的翻譯會很好,但我完全熟悉.NET正則表達式,因此對相關語法差異的解釋就足夠了。

非常感謝。

回答

5

@ s只是分隔符。你不需要他們的.NET

if(Regex.IsMatch(script,"^[a-z0-9/._-]+$", RegexOptions.IgnoreCase) 
    && !Regex.IsMatch(script,"([.][.])|([.]/)|(//)")) 
+0

太棒了。我的PHP-fu很差。我根本無法鼓起熱情去扭轉局面。 ;) – spender 2010-07-29 14:47:44

1

.NET中的@符號是語法糖,它表示下面的字符串將是文字和位於引號外。這允許一個字符串,您不必雙重轉義反斜槓字符(\)。所以「c:\\ foo \\ bar」變成@「c:\ foo \ bar」