2013-09-25 2 views
0

Мне нужно разобрать код JavaScript на C# и найти в нем регулярные выражения.regex для регулярных выражений javascript

Когда регулярные выражения создаются с помощью RegExp, я могу найти. (Так как выражение заключено в кавычки). Когда дело доходит до встраивать определение, что-то вроде:

var x = /as\/df/; 

я обращенную трудности в соответствие с шаблоном. Мне нужно начинать с /, исключая все символы до тех пор, пока не будет найден /, но следует игнорировать \/.

Я не могу передать на конце инструкции (;) из-за автоматической вставки точек с запятой или регулярное выражение может быть частью другого заявления, что-то вроде:

foo(/xxx/); //assume function takes regex param 

Если я прав, перенос строки не разрешено внутри встроенного регулярного выражения в JavaScript для сохранения моего дня. Тем не менее, следующие допускается:

var a=/regex1def/;var b=/regex2def/; 
foo(/xxx/,/yyy/) 

мне нужно регулярное выражение, как /.*/ коснуться, который захватывает правильные данные.

+0

вы можете использовать http://regexhero.net/tester/ найти регулярное выражение для конкретного text – rt2800

+0

Вы хотите регулярное выражение, которое соответствует ... регулярным выражениям? –

+0

Вы также не хотите сочетать модификаторы регулярных выражений? –

ответ

0

Как об этом:

Regex regexObj = new Regex(@"/(?:\\/|[^/])*/"); 

Объяснение:

/  # Match/
(?:  # Non-capturing group: 
\\  # Either match \ 
/ # followed by/
|  # or 
[^/] # match any character except/
)*  # Repeat any number of times 
/ # Match/
+0

Когда я проверил с помощью RegexHero, это выражение не дает никаких результатов –

+0

@ Возможно, это означало '\/(?: \\\/| [^ \ /]) * \/'(без разделителей в C#) – Jerry

+0

@Jerry: Ах, я читал JavaScript и думал, что ему нужно регулярное выражение JavaScript. В .NET это проще :) –

0

После нескольких испытаний с RegexHero, это, кажется, работает. /.*?[^\\]/. Но не уверен, что мне не хватает ни одного углового случая.

+0

Это определенно не удается. Рассмотрим '/ \\ /'. –

3

Вы не можете надежно анализировать языки программирования только с регулярными выражениями. Особенно Javascript, потому что его грамматика довольно неоднозначна. Рассмотрим:

a = a /b/ 1 
foo = /*bar*/ + 1 
a /= 5 //.*/hi 

Этот код действителен Javascript, но ни один из /.../-х здесь не являются регулярными выражениями.

В случае, если вы знаете, что вы делаете;), выражение для сопоставления уцелевших строк является «ограничитель, (что-то убежало или не разделитель), разделитель»:

delim (\\. | [^delim]) * delim 

где delim является / в вашем дело.

0

Я думаю, что это может вам помочь var patt =/pattern/modifiers;

• шаблон задает шаблон выражения • Модификаторов указать, если поиск должен быть глобальным, чувствительно к регистру, и т.д.

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