AS3正则表达式使html标记为大写

时间:2012-06-23 13:54:39

标签: html regex actionscript-3

我想转换包含HTML标记的字符串,以便所有标记和属性都是大写的(最好使用正则表达式)。

例如,以下字符串:

'<bla>something <br/><a href="foo">bar</a></bla>'

应改为

'<BLA>something <BR/><A HREF="foo">bar</A></BLA>'

这是否可以使用单个字符串替换正则表达式?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:3)

将HTML元素标记名称更改为大写非常简单。使用String替换方法的回调函数版本,如下所示:

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;});
}

答案 1 :(得分:0)

老实说,我不是AS3的专家。但是解决方法可能如下:

  1. 通过正则表达式查找所有html标记:<[^>]+>
  2. 用大写版本替换所有 html标记(使用toUpperCase()方法)。