如何在textarea中用句号替换逗号+句号?

How to replace comma + period with period in textarea?

我创建了一个简单的文本区域,其中一些字符会自动替换,例如,将直引号替换为智能引号、将双破折号替换为短划线、将双 space 替换为单 space。

但现在我不知道如何添加替换脚本:(不带引号)

word . as word.

word , as word,

word ; as word;

我只想防止在逗号、句号和分号之前以及像

这样的词之后多一个 space

Hello world ; 应自动替换为 Hello world;

这是我当前的脚本:

    var $message = $("#textarea1");

    $message.on("keydown keypress", function() {    
        var $this = $(this),
            val = $(this).val()
                         .replace(/(^|[-\u2014\s(\["])'/g, "\u2018")
                         .replace(/'/g, "\u2019")
                         .replace(/(^|[-\u2014/\[(\u2018\s])"/g, "\u201c")
                         .replace(/"/g, "\u201d")
                         .replace(/--/g, "\u2014")
                         .replace(/ +(?= )/g,'');

        $this.val(val);
    });

我找不到可以替代的实体。有人碰巧有这方面的现有代码吗?

如果我尝试

.replace(/ ;/g, "\;")

.replace(/ /g, "\;")

这行不通..

您可以使用 .replace(/\s+(;|,|\.)/, ''); 删除分号、逗号或句号前的所有空格。

var $message = $("#textarea1");

$message.on("keydown keypress", function() {    
  var $this = $(this),
      val = $(this).val()
  .replace(/(^|[-\u2014\s(\["])'/g, "\u2018")
  .replace(/'/g, "\u2019")
  .replace(/(^|[-\u2014/\[(\u2018\s])"/g, "\u201c")
  .replace(/"/g, "\u201d")
  .replace(/--/g, "\u2014")
  .replace(/ +(?= )/g,'')
  .replace(/\s+(;|,|\.)/, '');

  $this.val(val);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="textarea1"></textarea>