Регулярка для комментариев /* comment */ , опционально закрытых
Помогите составить регулярку для отлова комментариев типа
/* $foo = 1 + 2; $foo = $foo; print $foo; */ или /* $foo = 1 + 2; $foo = $foo; print $foo; То есть комментарий может быть не закрытым. Есть такая регулярка: /\/\*(.|\s)*?\*\// - она ловит цельные комментарии. Попутный вопрос - на незакрытых комментариях она замораживает браузер на несколько секунд - почему? Я ее изменил на /\/\*[\S\s]*?\*\// , теперь не тормозит. Необходимо изменить паттерт, чтоб под него подходили как открытые, так и закрытые комментарии. Пробовал /\/\*[\S\s]*?(?:\*\/)?/ , но не подходит, так же как и /\/\*[\S\s]*(?:\*\/)?/ Две последовательных проверки : /\/\*(.|\s)*?\*\// , затем /\/\*[\S\s]*/ работают. Вопрос - как можно совместить эти регулярки, или переделать, чтоб решить задачу? |
Цитата:
|
var str = "/* \n" + "$foo = 1 + 2; \n" + "$foo = $foo; \n" + "print $foo;\n" + "*/"; var str2 = "/* \n" + "$foo = 1 + 2; \n" + "$foo = $foo; \n" + "print $foo;"; alert( /\/\*([\S\s]*?)(?:\*\/|$)/.exec( str ) ); alert( /\/\*([\S\s]*?)(?:\*\/|$)/.exec( str2 ) ); |
devote, спасибо.
А подсказать кто-нибудь может почему такой код вызывает фриз браузера секунд на 10? var str = "<?php \n" + "/* \n" + " $foo = 1 + 2; \n" + " $foo = $foo; \n" + " print $foo;\n" + "?>"; alert( /\/\*(.|\s)*?\*\//.exec( str ) ); |
Цитата:
var str = "<?php \n\ /* \n\ $foo = 1 + 2; \n\ $foo = $foo; \n\ print $foo;\n\ ?> "; var a = str.replace(/[\s\S]*?(\/\*)[\s\S]*?(?:(\*\/))/img,'$1$2'); alert(a.replace(/\/\*\*\//igm,'')==''); var str = "<?php \n\ /* \n\ $foo = 1 + 2; */ /*\n\ $foo $foo; \n\ print*/ $foo;/*\n\ ?> */"; var a = str.replace(/[\s\S]*?(\/\*)[\s\S]*?(?:(\*\/))/img,'$1$2'); alert(a.replace(/\/\*\*\//igm,'')==''); |
Часовой пояс GMT +3, время: 23:54. |