我在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正则表达式,因此对相关语法差异的解释就足够了。
非常感谢。
答案 0 :(得分:5)
@
只是分隔符。你在.NET中不需要它们
if(Regex.IsMatch(script,"^[a-z0-9/._-]+$", RegexOptions.IgnoreCase)
&& !Regex.IsMatch(script,"([.][.])|([.]/)|(//)"))
答案 1 :(得分:2)
.net中的@符号是语法糖,表示以下字符串是文字,位于引号之外。这允许一个字符串,您不必双重转义反斜杠字符(\
)。所以“c:\\
foo \\
bar”成为@“c:\ foo \ bar”