Javascript字符串替换'& zwj'无效

时间:2018-04-12 01:52:50

标签: javascript regex

我正在使用html的select标签进行下拉列表。 我需要在选项中的标签之前添加一个空格键&emsp,如下所示:

<div class="item" data-value="0399">&emsp;Fruits </div>
<div class="item" data-value="0359">&emsp;&emsp;Banana </div>
<div class="item" data-value="0359">&emsp;&emsp;Apple </div>
<div class="item" data-value="0359">&emsp;&emsp;Kiwi </div>

这适用于桌面模式,但不适用于我的iphone。 我的iphone的Chrome浏览器无法呈现&emsp

所以,我通过在&zwj;之前添加&emsp;来解决这个问题:

<div class="item" data-value="0399">&zwj;&emsp;Fruits </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Banana </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Apple </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Kiwi </div>

但是,我发现我无法通过使用javascript删除''。 这就是我的尝试:

text.replace(/&zwj;&emsp;/g, ''))
text.replace(/&zwj;|&emsp;/g, ''))
text.replace(/&emsp;/g, ''))

请您建议我如何从文本中删除该内容?

---编辑了更多规范。

<div class="item" data-value="0399">&zwj;&emsp;Fruits </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Banana And Apple </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Apple And Kiwi </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Kiwi And pineapple </div>

如何删除该节点中的&zwj;&emsp;

----编辑

此代码效果很好。

document.querySelectorAll('.item')
  .forEach((item) => {
  item.textContent = item.textContent.match(/[\w ]+/);
});

但是,

<div class="item" data-value="0399">&zwj;&emsp;과일</div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;화학 공업 양론 </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;그렁 그렁 열매</div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;불라 불라</div>

在这种情况下,该代码效果不佳。(即韩国人)

请检查一下。

document.querySelectorAll('.item')
  .forEach((item) => {
    item.textContent = item.textContent.match(/[\w ]+/);
});
<div class="item" data-value="0399">&zwj;&emsp;과일</div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;화학 공업 양론 </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;그렁 그렁 열매</div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;불라 불라</div>

3 个答案:

答案 0 :(得分:0)

识别内部的单词,并将textContent设置为找到的单词:

document.querySelectorAll('.item')
  .forEach((item) => {
    item.textContent = item.textContent.match(/[\w ]+/);
  });
<div class="item" data-value="0399">&zwj;&emsp;Fruits </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Banana And Apple </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Apple And Kiwi </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;Kiwi And pineapple </div>

答案 1 :(得分:0)

您需要在正则表达式中以unicode指定它。

u200Du2003

https://www.regular-expressions.info/unicode.html

答案 2 :(得分:0)

您可以按[\S]进行匹配,这将匹配除空白之外的任何字符,因此我们可以使用与[^\S]相反的方式:

document.querySelectorAll('.item')
  .forEach((item) => {
    item.textContent = item.textContent.replace(/[^\S]+/g," ");
  });
<div class="item" data-value="0399">&zwj;&emsp;과일</div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;화학 공업 양론 </div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;그렁 그렁 열매</div>
<div class="item" data-value="0359">&zwj;&emsp;&zwj;&emsp;불라 불라</div>