我需要计算没有空格和
标签的字符串长度。
我的JS模式不起作用,因为它也不计算'b'和'r'字符。
我的代码在这里:
content.match(/[^\s^<br />]/g).length
如何解决?
答案 0 :(得分:1)
而不是匹配,只需使用.replace()
即可。 Match总是返回一个数组,并且因为Javascript中的原语是不可变的,所以你可以使用replace()轻松创建一个没有这些字符的新字符串。
let newString = oldString.replace(/\s/g, '') //replace all whitespace with empty spaces
newString = newString.replace(/<br\s*\/?>/g, '') //replace <br> and <br /> with empty spaces
然后只做newString.length
将来,请尝试使用https://regexr.com来测试正则表达式匹配
答案 1 :(得分:0)
如果要删除所有HTML标记(不只是<br/>
),可以将字符串作为HTML添加到新元素中,抓取textContent
,然后运行正则表达式匹配这一点。
let str = '<div>Hallo this is a string.</div><br/>';
let el = document.createElement('div');
el.innerHTML = str;
let txt = el.textContent;
let count = txt.match(/[^\s]/g).join('').length; // 19
<强> DEMO 强>