我正在寻找一个正则表达式来替换字符串中的'NO-BREAK SPACE'。
关于“与NO-BREAK SPACE”有关的SO有一些问题,但似乎没有人能指出正确的答案。
到目前为止,我试图使用(字符串“AB”的第二个字符是一个无休息空间)但没有成功:
"A B".replace(new RegExp(String.fromCharCode(160),"g"),"xxx");
"A B".replace($('<b> </b>').text(), 'xxx');
"A B".replace(/\xA0/,'xxx');
"A B".replace(/\\xA0/,'xxx');
"A B".replace(/\u00A0/,'xxx');
"A B".replace(/\\u00A0/,'xxx');
更新:愚蠢的我。真相是我用错误的角色测试了很长一段时间。
答案 0 :(得分:13)
字符串中的实际字符为NARROW NO-BREAK SPACE (U+202F),而不是通常的\xA0
。
像
这样的东西.replace(/[\u202F\u00A0]/, "...")
应该适合你。
答案 1 :(得分:1)
我不知道@georg在答案中解释的事实。
但如果你只是在A
和B
之间复制字符并将其粘贴到.replace()
函数中,它就会有效。
这是fiddle。
和片段。
alert("A B".replace(' ', 'xxx'));
答案 2 :(得分:0)
除了空格,NO-BREAK SPACE等。字符串中还存在其他空格字符。
我们可能需要从字符串http://jkorpela.fi/chars/spaces.html中替换掉,这里已经给出了完整的Unicode空格列表。
.replace(/[\u202F\u00A0\u2000\u2001\u2003]/, "...")