preg_match到.NET等价

时间:2010-07-29 14:40:41

标签: c# php .net regex

我在PHP中有以下代码:

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

我假设if语句的谓词对字符串js/core.js返回true。

我如何将其转换为C#?愚蠢的翻译如下:

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

但是我怀疑@符号具有与之相关的含义,我无法理解。对.NET正则表达式的翻译会很好,但我完全熟悉.NET正则表达式,因此对相关语法差异的解释就足够了。

非常感谢。

2 个答案:

答案 0 :(得分:5)

@只是分隔符。你在.NET中不需要它们

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

答案 1 :(得分:2)

.net中的@符号是语法糖,表示以下字符串是文字,位于引号之外。这允许一个字符串,您不必双重转义反斜杠字符(\)。所以“c:\\ foo \\ bar”成为@“c:\ foo \ bar”