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