Изменение имен тегов элемента HTML в верхнем регистре довольно просто. Используйте функцию обратного вызова версии строки заменить метод следующим образом:
function HtmlTagName2Upper(text) {
return text.replace(/(<\/?\w+\b)([^<>]*>)/g,
function(m0, m1, m2) {
return m1.toUpperCase() + m2;});
}
выше регулярное выражение захватывает имя тега в $1
и все атрибуты (если таковые имеются) в $2
. Вышеупомянутое регулярное выражение будет работать очень хорошо, но не обрабатывает значения атрибутов, имеющие угловые скобки и не заглавные имена атрибутов.
Обработка HTML-элементы, имеющие угловые скобки в их значениях атрибутов и делает элемент имена атрибутов прописные немного сложнее:
function HtmlTagAndAttributeNames2Upper(text) {
return text.replace(/(<\/?\w+\b)((?:[^<>'"]+|"[^"]*"|'[^']*')*>)/g,
function(mo0, mo1, mo2) {
mo2 = mo2.replace(/(\s+[\w\-.:]+)((?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w\-.:]+))?)/g,
function(mi0, mi1, mi2) {
return mi1.toUpperCase() + mi2});
return mo1.toUpperCase() + mo2;});
}
я thoght что-то в этом роде, но как применить «toUpperCase» только maches регулярного выражения? а также это изменит значения свойств тега и в верхнем регистре. например, он изменил бы на istead – Mat
Для каждого тега, возвращаемого вашим регулярным выражением: 1: угловые скобки полосы ' > '. Получите текст текста тега в приложении. 2: Используйте метод split (/ \ s + /) ': получите имя тега и запишите его. 3: для каждого атрибута = значение разделите его на 'split (/ = /)' и получите имена атрибутов. Пропустите их. 4. Сконцентрируйте полученную строку. '' <'' + 'upperCaseTagName' +' attributeUppercase' = 'attributeValue' * +'> ' 5. Замените старую строку на новую. – user278064