Чтобы охватить «все возможности», вы действительно должны использовать HTML 5 Определение правил кодирования символов . Они не могут быть выражены как регулярное выражение.
Существует открытый исходный код Реализация Java в validator.nu
Если вы настаиваете на использовании регулярного выражения, то это, вероятно, охватит большинство случаев, когда кодировка, объявленная метаэлементом (например, не будет охватывать объявления XML) Это, однако, грязно, делает некоторые предположения, которые обычно (но не всегда) правильны, и я не рекомендую это.
/<meta[^>]+charset=['"]?(.*?)['"]?[\/\s>]/i