preg_match的.NET等效替代方案

4

我在 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个回答

7
< p >“@”符号只是分隔符,在.NET中不需要它们。< /p >
if(Regex.IsMatch(script,"^[a-z0-9/._-]+$", RegexOptions.IgnoreCase)
   && !Regex.IsMatch(script,"([.][.])|([.]/)|(//)"))

太棒了。我的PHP技能非常差。我根本无法激起翻转它的热情。;) - spender

2

.Net中的@符号是一种语法糖,它表示以下字符串将是一个字面量并且位于引号外部。这样可以创建一个字符串,在其中您无需对反斜杠字符(\)进行双倍转义。因此,"c:\\foo\\bar" 可以变成 @"c:\foo\bar"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接