У меня есть следующий код в PHP:
if (preg_match('@^[a-z0-9/._-]+$@i', $script) && !preg_match('@([.][.])|([.]/)|(//)@', $script))
Я делаю предположение, что предикат для оператора if
возвращает true для строки js/core.js
Как перевести это на C #? Тупой перевод выглядит следующим образом:
if(Regex.IsMatch(script,"@^[a-z0-9/._-]+$@i") && !Regex.IsMatch(script,"@([.][.])|([.]/)|(//)@"))
но я подозреваю, что символ @
имеет значение, связанное с ним, что я не могу добраться до конца. Перевод в .NET regex был бы приятным, но я полностью знаком с регулярным выражением .NET, поэтому достаточно объяснения соответствующих синтаксических различий.
Большое спасибо.
@
S – это просто разделитель. Вы не нуждаетесь в них в .NET.
if(Regex.IsMatch(script,"^[a-z0-9/._-]+$", RegexOptions.IgnoreCase) && !Regex.IsMatch(script,"([.][.])|([.]/)|(//)"))
Символ @ в .net является синтаксическим сахаром, который означает, что следующая строка будет литералом и находится вне кавычек. это позволяет использовать строку, в которой вам не нужно удваивать символ обратной косой черты ( \
). Итак, "c: \\
foo \\
bar" становится @ "c: \ foo \ bar"