日期:2014-05-20  浏览次数:20682 次

各位大神 求助用正则表达式抽取jsp页面的中文
项目正在进行国际化工作,目前需要将页面中的中文提取出来(注释除外)供翻译人员进行翻译。
我尝试了用正则表达式去抽取中文,但是目前遇到了如下几个问题:
1、注释中的中文不好匹配,在jsp页面中有如下的注释情况: <% %>   //   /****/  <!-- -->(因为在jsp页面中可嵌入java代码、js代码、还有自身的html代码)
2、在jsp页面一行的文本中如果有类似的信息: "客户档案accountName,输入的文本超过最大长度200" ,则处理结果应该为:客户档案accountName,输入的文本超过最大长度200;而:
if (pos > -1) {
        if (arg.split(".")[1].length>decimal_length) {
            errorMsg =  title+"小数点后最多可输入"+decimal_length+"个数字";
            alert(errorMsg);
            return false;
        }
    }

处理的结果则是提取出两个中文字段:小数点后最多可输入  和  个数字。
试了快一天了,没试出来 

任何给出意见的,将不甚感激!
正则表达式?提取中文?jsp页面

------解决方案--------------------
可以直接匹配出来
------解决方案--------------------

var Filter = {
                    doFilter: function(str){
                        if(!str 
------解决方案--------------------
 typeof str !== 'string')return str;
                        for(var i = 0, len = this._filters.length; i < len; i++){
                            str = str.replace(this._filters[i], "");
                        }
                        return str;
                    },
                    _filters: [//private
                        /\/\*(?:.
------解决方案--------------------
\n)*?\*\//g,
                        /\/\/.*/g,
                        /<\!--(?:.
------解决方案--------------------
\n)*?-->/g
                    ]
                },
       getter = /['"](?:.
------解决方案--------------------
\n)*?[^\x00-\xff](?:.
------解决方案--------------------
\n)*?['"]/g;

        var testStr = "//测试\n" +
                "var x = 1;\n" +
                "/**\n" +
                "中文\n" +
                "*/\n" +
                "<!--<span>测试中文</span>\n-->\n" +
                "var y = '中文变量';\n" +
                "var z = '变量加' + x + y\n";

        testStr = Filter.doFilter(testStr);
        var zhStr = testStr.match(getter);