var regex = /<[^>]+>/g; var html = CKEDITOR.instances.articleContent.getData(); var len = html.replace(regex,"").length;len就是长度?这个意思吗?
var len = CKEDITOR.instances.articleContent.getData() .replace(/<.+?>/g,"") //去掉所有HTML标记 .replace(/&.+?;/g,".") //将所有HTML实体替换为"."(也可以为其他的单字),以确保只按一个字计算 .length
一般可视化编辑器生成的代码不会有格式问题导致的多余空格,如果是一般化的html代码(直接以代码模式编辑)就比较麻烦,目前就考虑到这么多情况,更多的情况自己分析,比如<pre>标签等更复杂的情况可能要用到中间值并分步替换,要注意的是不能影响后面的替换: var htmlStr = CKEDITOR.instances.articleContent.getData(); var len = htmlStr .replace(/\s+/," ") //将多个空字符换成一个空格 .replace(/<br\s*?\/?>/,".") //将所有换行符替换成一个字符(不用\n是因为可能会被后面换掉) .replace(/(<\/p>)/,".$1") //为所有段落添加一个字符(或两个字符,自己定)将点放在前面避免影响后面的替换 .replace(/<\/.+?>\s*<[^\/]>/g,"") //去掉所有尾-首相连的HTML标签(包括中间的空字符) .replace(/<.+?>/g,"") //去掉剩下的HTML标签 .replace(/&.+?;/g,".") //转换所有实体为一个字符 .length
前面几个忘了加g模式,顺便把pre一起处理了。 var htmlStr = CKEDITOR.instances.articleContent.getData(); var len = 0; //处理pre var pres = htmlStr.match(/<pre*.?>(.*?)<\/pre>/g); htmlStr = htmlStr.replace(/<pre*.?>(.*?)<\/pre>/g,""); if(pres) len += pres.join("").length; len += htmlStr .replace(/\s+/g," ") //将多个空字符换成一个空格 .replace(/<br\s*?\/?>/g,".") //将所有换行符替换成一个字符(不用\n是因为可能会被后面换掉) .replace(/(<\/p>)/g,".$1") //为所有段落添加一个字符(或两个字符,自己定)将点放在前面避免影响后面的替换 .replace(/<\/.+?>\s*<[^\/]>/g,"") //去掉所有尾-首相连的HTML标签(包括中间的空字符) .replace(/<.+?>/g,"") //去掉剩下的HTML标签 .replace(/&.+?;/g,".") //转换所有实体为一个字符 .length
var html = CKEDITOR.instances.articleContent.getData();
var len = html.replace(regex,"").length;len就是长度?这个意思吗?
.replace(/<.+?>/g,"") //去掉所有HTML标记
.replace(/&.+?;/g,".") //将所有HTML实体替换为"."(也可以为其他的单字),以确保只按一个字计算
.length
var htmlStr = CKEDITOR.instances.articleContent.getData();
var len = htmlStr
.replace(/\s+/," ") //将多个空字符换成一个空格
.replace(/<br\s*?\/?>/,".") //将所有换行符替换成一个字符(不用\n是因为可能会被后面换掉)
.replace(/(<\/p>)/,".$1") //为所有段落添加一个字符(或两个字符,自己定)将点放在前面避免影响后面的替换
.replace(/<\/.+?>\s*<[^\/]>/g,"") //去掉所有尾-首相连的HTML标签(包括中间的空字符)
.replace(/<.+?>/g,"") //去掉剩下的HTML标签
.replace(/&.+?;/g,".") //转换所有实体为一个字符
.length
var htmlStr = CKEDITOR.instances.articleContent.getData();
var len = 0;
//处理pre
var pres = htmlStr.match(/<pre*.?>(.*?)<\/pre>/g);
htmlStr = htmlStr.replace(/<pre*.?>(.*?)<\/pre>/g,"");
if(pres)
len += pres.join("").length;
len += htmlStr
.replace(/\s+/g," ") //将多个空字符换成一个空格
.replace(/<br\s*?\/?>/g,".") //将所有换行符替换成一个字符(不用\n是因为可能会被后面换掉)
.replace(/(<\/p>)/g,".$1") //为所有段落添加一个字符(或两个字符,自己定)将点放在前面避免影响后面的替换
.replace(/<\/.+?>\s*<[^\/]>/g,"") //去掉所有尾-首相连的HTML标签(包括中间的空字符)
.replace(/<.+?>/g,"") //去掉剩下的HTML标签
.replace(/&.+?;/g,".") //转换所有实体为一个字符
.length