2010-07-29 65 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”