preg_match в .NET эквивалент - PullRequest
0 голосов
/ 29 июля 2010

У меня есть следующий код в 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-регулярные выражения был бы неплохим, но я хорошо знаком с .NET-регулярными выражениями, поэтому объяснения соответствующих различий в синтаксисе было бы достаточно.

Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 29 июля 2010

@ являются просто разделителем. Вам не нужны они в .NET

if(Regex.IsMatch(script,"^[a-z0-9/._-]+$", RegexOptions.IgnoreCase)
   && !Regex.IsMatch(script,"([.][.])|([.]/)|(//)"))
2 голосов
/ 11 января 2011

Символ @ в .net является синтаксическим сахаром, который обозначает, что следующая строка будет литералом и расположена вне кавычек. это позволяет получить строку, в которой вам не нужно дважды экранировать символ обратной косой черты (\). Таким образом, "c: \\ foo \\ bar" становится @ "c: \ foo \ bar"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...