Соответствие управляющих символов Юникода, за исключением трех, с регулярными выражениями

Мне нужно получить регулярное выражение, которое соответствует всем управляющим символам Юникода, за исключением возврата каретки (0x0d), перевода строки (0x0a) и табулятора (0x09). В настоящее время мое регулярное выражение выглядит так:

/\p{C}/u

Мне просто нужно определить эти три исключения сейчас.

1 ответ

Решение

Я думаю, что вы можете использовать отрицательный взгляд здесь, в сочетании с классами персонажей.

/(?![\x{000d}\x{000a}\x{0009}])\p{C}/u

Для этого нужно использовать отрицательный взгляд, чтобы утверждать, что символ не является одним из тех, которые указаны в классе символов. Затем он пересекает персонажа снова, чтобы сопоставить его с любым управляющим персонажем.

Я использовал синтаксис perl для определения отдельных точек Unicode.

Более подробное обсуждение здесь

(Обратите внимание, что это не было проверено, но я думаю, что концепция верна.)

Другие вопросы по тегам