前提・実現したいこと
入力ボックスを作っています。「改行以外のホワイトスペース系の文字」は半角スペースのみに限定したいです。
例
こんにちは😀
→普通にこのままでOK
こんにち は😀
→改行はこのままでOK
こんにち は😀
→全角スペースがあるので、半角スペースに変換してこんにち は😀
にしたい
発生している問題
正規表現で「改行以外のホワイトスペース系の文字」を指示すればできそうだと考えてtext.replace(/[^\n]\s/,' ');
を使ったところ、どういうわけか、テキストの先頭にスペースが入ってしまいます。
該当のソースコード
こちらなんですが、こんにちは😀
にこんにち は😀
と全角スペースを入れると こんにち は😀
と先頭にスペースが入ってしまいます。
html
1<!doctype html> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>半角だけ</title> 6<style> 7* { 8 margin:0; 9 padding:0; 10} 11</style> 12 13</head> 14 15<body> 16<div contenteditable="true">こんにちは😀</div> 17 18<script> 19$(document).on('input','div[contenteditable="true"]', function(){ 20 let text = $(this).text(); 21 text.replace(/[^\n]\s/,' '); 22 $(this).text(text); 23}); 24</script> 25</body> 26</html>
試したこと
他のテキストでも同様でしたので、絵文字がダメとかいうわけではないと思います。
あとconsole.log(text)
で見るとその時点で先頭にスペースがあるので、正規表現がおかしいのかとも思いますが、それでも先頭にスペースが入るという現象の原因にはならないと思うので、何か自分の知らない原因があるのだと思い質問させて頂きました。
もし可能であれば宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/20 02:56
2022/04/20 03:05
2022/04/20 04:04