最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html - How to replace non-Ascii characters from input with something else in JavaScript - Stack Overflow

programmeradmin0浏览0评论

I am implementing a chat-function to a JavaScript game using WebSocket. I want to replace non-ascii characters the user has written in the input textfield with other letters. Ä is replaced with a and Ö is replaced with o. And every other non-ascii characters should be replaced by "".

var message = document.getElementById("write_message").value;
message = message.replace(/ä/g, "a").replace(/ö/g, "o");
message = message.replace(/^[\000-\177]/g, "");
ws.send("M" + message);

I tried even simpler versions of the above code, but somehow all user input seemed to be replaced. Even ascii-characters. I found the regular expression from another Stackoverflow question.

I am implementing a chat-function to a JavaScript game using WebSocket. I want to replace non-ascii characters the user has written in the input textfield with other letters. Ä is replaced with a and Ö is replaced with o. And every other non-ascii characters should be replaced by "".

var message = document.getElementById("write_message").value;
message = message.replace(/ä/g, "a").replace(/ö/g, "o");
message = message.replace(/^[\000-\177]/g, "");
ws.send("M" + message);

I tried even simpler versions of the above code, but somehow all user input seemed to be replaced. Even ascii-characters. I found the regular expression from another Stackoverflow question.

Share Improve this question asked Apr 17, 2013 at 14:13 Teemu LeivoTeemu Leivo 3412 gold badges5 silver badges20 bronze badges 1
  • encodeURIComponent? – BlueRaja - Danny Pflughoeft Commented Oct 27, 2017 at 18:51
Add a ment  | 

2 Answers 2

Reset to default 4

you have to know the charset of the supporting html page. depending on whether it's unicode or some 8bit charser, use \uzzzz or \xzz to match chars where z represents a hex digit.

example: message = message.replace(/^[\u0080-\uffff]/g, ""); ascii-fies unicode text.

Your code is correct except that the circumflex ^ must appear after the left bracket [ in order to indicate negation. Otherwise it means something pletely different.

However, I think you actually want to map uppercase Ä and Ö to A and O instead of deleting them. For this, you would use

message = message.replace(/ä/g, "a")
                 .replace(/ö/g, "o")
                 .replace(/Ä/g, "A")
                 .replace(/Ö/g, "O")
                 .replace(/[^\000-\177]/g, "");
发布评论

评论列表(0)

  1. 暂无评论