我正在寻找一种使用NodeJS从后端的字符串中剥离标签的方法。这里的一些答案建议尝试node-validator
,但文档和任何答案都没有具体说明如何使用它。
例如,我在这样的变量中有一个字符串:
INPUT:
var text = '<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>'
期望的输出:
var newText = Hello there! I am a string but not a very exciting one!
node-validator
个文档有几个选项,我认为最相关的是trim()
函数:
var check = require('validator').check,
sanitize = require('validator').sanitize
//Validate
check('test@email.com').len(6, 64).isEmail(); //Methods are chainable
check('abc').isInt(); //Throws 'Invalid integer'
check('abc', 'Please enter a number').isInt(); //Throws 'Please enter a number'
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);
//Sanitize / Filter
var int = sanitize('0123').toInt(); //123
var bool = sanitize('true').toBoolean(); //true
var str = sanitize(' \t\r hello \n').trim(); //'hello'
var str = sanitize('aaaaaaaaab').ltrim('a'); //'b'
var str = sanitize(large_input_str).xss();
var str = sanitize('<a>').entityDecode(); //'<a>'
是否可以使用它从字符串中去除标签(以及类)?
编辑:我还加载了cheerio
(基本上是jquery)并尝试使用类似的内容:
HTML
<div class="select">
<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>
</div>
JAVASCRIPT
(function() {
var text = $(.select *).each(function() {
var content = $(this).contents();
$(this).replaceWith(content);
}
);
return text;
}
());
但这导致'Object '<p><b>Hello....' has no method "contents"'
错误,如果使用jQuery更容易,我可以使用类似的函数。
答案 0 :(得分:9)
我不使用node-validator但这样的东西对我有用
var text = '<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>
text.replace(/(<([^>]+)>)/ig,"");
输出
你好!我是一个字符串,但不是一个非常令人兴奋的字符串!
现在您可以使用节点验证器修剪它。
获得here
的代码段答案 1 :(得分:6)
好吧,我还没有看完你的完整问题。但你可以使用。获得所需的输出 string.js 节点模块。您可以使用节点
进行安装以下是我使用的代码 - &gt;
var S = require('string');
var text = '<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>';
console.log(text);
text = S(text).stripTags().s;
console.log(text);
<强>输出 - 强>
<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>
Hello there! I am a string but not a very exciting one!
如何安装string.js?
npm install --save string
答案 2 :(得分:2)
看起来node-validator没有内置任何类型的HTML标记剥离,trim()
不起作用,因为它似乎只能指定要删除的单个字符。它非常容易扩展,因此您可以为其编写扩展来删除HTML标记。
否则,您可以使用cheerio .text()
(docs)方法获取元素及其后代的组合文本内容。
这样的事情应该有效:
$('.select *').each(function() {
var content = $(this).text();
$(this).replaceWith(content);
}
这将删除.select
中的所有html,如果您希望更换*
,请移除.select
。