正则表达式取代'NO-BREAK SPACE'

Tha*_*ama 7 javascript regex string

我正在寻找一个正则表达式来替换字符串中的'NO-BREAK SPACE'.

SO上有一些与"NO-BREAK SPACE"相关的问题,但似乎没有一个问题能让我找到正确的答案.

到目前为止,我试图使用(字符串"A B"的第二个字符是一个无休息空间)但没有成功:

"A?B".replace(new RegExp(String.fromCharCode(160),"g"),"xxx");
"A?B".replace($('<b>&nbsp;</b>').text(), 'xxx');
"A?B".replace(/\xA0/,'xxx');
"A?B".replace(/\\xA0/,'xxx');
"A?B".replace(/\u00A0/,'xxx');
"A?B".replace(/\\u00A0/,'xxx');
Run Code Online (Sandbox Code Playgroud)

更新:愚蠢的我.真相是我用错误的角色测试了很长一段时间.

geo*_*org 16

你的字符串中的实际字符是NARROW NO-BREAK SPACE(U + 202F),而不是通常的字符\xA0.

就像是

.replace(/[\u202F\u00A0]/, "...")
Run Code Online (Sandbox Code Playgroud)

应该适合你.


Rak*_*ari 11

除了空格、NO-BREAK SPACE 等之外,还有其他空格字符也可以出现在字符串中。

这是空格的完整 Unicode 列表。来源: http: //jkorpela.fi/chars/spaces.html

数字 角色名字
\u0020 空间
\u00A0 不间断空间
§1680 奥格姆空格标记
§180E 蒙古语元音分隔符
§2000 四人组
§2001 四边形
§2002 空间(坚果)
§2003 em 空间(羊肉)
§2004 每三个空格(厚空格)
§2005 每四个空间(中间空间)
§2006 每人六人的空间
§2007 图形空间
§2008 标点空格
§2009 狭小的空间
§200A 头发空间
?? 零宽度空间
§202F 狭窄的不间断空间
§205F 中等数学空间
¥3000 表意空间
\uFEFF 零宽度不间断空间

因此,要替换所有奇怪的空格

.replace(/[\u00A0\u1680\u180E\u2000-\u200B\u202F\u205F\u3000\uFEFF]/, " ")
Run Code Online (Sandbox Code Playgroud)

从上面的内容中,您可以排除\u1680,因为它“通常不是真正的空格,而是破折号”。