2011-12-21 3 views
2

Сценарий: Пользователи введите ключевое слово (например, hello) в моем asp.netmvc приложения, а затем нажмите search в C# коде построить JavaScriptRegExp строки (/hello/i), который будет передается в запросе MongoDB, весь запрос выглядит следующим образом:Build (побег) регулярное выражение JavaScript в C#

db.Posts.find({ "title" : /hello/i }) 

, чтобы получить все сообщения с hello в его названии.

Если ключевое слово содержит специальные символы (например, \ или (), то js regexp построен неправильно.

Есть ли какая-либо библиотека C#, чтобы ее разобрать?

ответ

1

Вы ищете Regex.Escape.

Хотя Javascript и .Net используют разные двигатели с регулярными выражениями, я считаю, что .ec-escaper достаточно хорош для регулярного выражения JS.

+0

Да, вкус .NET - это, по сути, надмножество JavaScript. Любой символ, который имеет особое значение в JS, также является особенным в .NET и будет правильно экранирован. –

+0

Проверьте несколько случаев, вы правы. –

+0

@ DannyChen: В простых случаях это, безусловно, будет работать. Это угловые случаи, о которых я не уверен. – SLaks

Смежные вопросы