如何使用 javascript 随机用 and 或 & 替换一个标点符号

How to replace one punctuation with and or & randomly using javascript

我正在尝试删除后面跟着标点符号的标点符号,我已经做到了,但我需要用 and 或 & 随机替换句子中的最后一个但第二个标点符号。

这是代码

 <html>
   <head>
      <script>
           $( document ).ready(function() {
                for(var i=0;i<2;i++)
            {
                var remove_dot=document.getElementsByTagName("p")[i];
                var remove=remove_dot.innerHTML;
                remove_dot.innerHTML = remove.replace(/[,|.-]+[\s]*([,|.-])/g, "");
               }
              });
       </script>
     <body>
         <p>hello , . are you | . why , its ok , .</p>
         <p>hey , . are you | . why | its ok , .</p>
     </body>

在上面的脚本的帮助下,我能够删除标点符号后面的标点符号 这是我的输出

 hello . are you . why , its ok .  
 hey . are you . why | its ok .

但是因为我需要用 and,& 随机替换倒数第二个标点符号,我该如何修改正则表达式 这是我的预期输出。

      hello . are you . why and its ok .  
      hey . are you . why & its ok .
$( document ).ready(function() {
    $("p").each(function(){
        // get the text of this p
        var text = $(this).text();

        // remove consecutive ponctuations
        text = text.replace(/[,|.-]+\s*([,|.-])/g, "");

        // random "&" or "and" to replace the second from the last ponctuation
        var rep = Math.random() < 0.5? "&": "and";

        // match the second from the last ponctuation
        text = text.replace(/[,|.-]([^,|.-]*[,|.-][^,|.-]*)$/, rep + "");

        // reset the text of this p with the new text
        $(this).text(text);
    })
});

匹配从最后一个标点开始的第二个标点的正则表达式,查找后跟任何内容的标点,而不是后跟标点和文本结尾的标点 $。所以唯一匹配的是倒数第二个。

正则表达式还检查在最后一个标点符号之后是否有一些文本(不能包含标点符号)。如果您确定在最后一个标点符号之后永远不会有文本,请使用这个较短的正则表达式 (/([,|.-])([^,|.-]*[,|.-])$/).