Комментарии 4
… одно выражение, что бы править всеми…
Вы усложнили выражение более, чем это требуется.
(?<=^|[^\x5c]|(?:^|[^\x5c])(?:\x5c{2})+)\x5b[^\x5d]+\x5d
полностью эквивалентно
(?<=^|[^\x5c](?:\x5c{2})*)\x5b[^\x5d]+\x5d
- Дело вкуса, конечно, но то, что Вы называете "избавление от ряби в глазах" еще сильнее усложняет восприятие регулярного выражения (как мне кажется)
(?<=^|[^\\](?:\\{2})*)\[[^\]]+\]
выглядит привычно и читаемо. Хотя, если честно, сам иногда пишу в похожем варианте, когда слишком много экранированных символов в регулярном выражении:
var re = "(?<=^|[^\\](?:\\{2})*)LT[^GT]+GT".replace( /LT/g, "\\[" ).replace( /GT/g, "\\]" );
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Один из способов поиска неэкранированных символов с помощью новых средств JavaScript