javascript - 轻松替换值中多行的字符串

标签 javascript regex replace

编织:https://mikethedj4.github.io/kodeWeave/editor/#98f122f9b4f7b8f1ae0c945d3087f580

我正在使用如下代码,但它重复了多次。

基本上我想把这个....

selected_text = editor.getSelection();  // Need to grab the Active Selection

editor.replaceSelection("<" + selected_text + ">");
editor.focus();

为此....

selected_text = editor.getSelection();  // Need to grab the Active Selection

editor.replaceSelection("<" + selected_text + ">").focus();

是否有转换器可以为我做这件事?

我尝试使用....

preview.val( this.value.replace(/;\n            editor.focus();/g,".focus();") )

但它不起作用,控制台也没有告诉我任何信息 :(

$(document).ready(function() {
  var editor  = $(".editor"),
      preview = $(".preview");
  
  // Remove new line and insert new line showing the text in value
  editor.keyup(function() {
    preview.val( this.value.replace(/;\n        htmlEditor.focus();/g,".focus();") )
  }).click(function() {
    this.select()
  })
  
  // Easily Select Converted Code
  preview.click(function() {
    this.select()
  })
  
    preview.val( editor.val().replace(/;\n        htmlEditor.focus();/g,".focus();") )
})
body {
  margin: 0;
  background: #333;
}

.editor, .preview {
  position: absolute;
  width: 50vw;
  height: 100vh;
  padding: 1em;
  border: 0;
  border-radius: 0;
  resize: none;
}

.editor {
  left: 0;
  color: #0b0;
  background-color: #000;
}

.preview {
  right: 0;
  background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea class="editor" placeholder="Code with multiple lines here...">            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();</textarea>
<textarea class="preview" placeholder="Generated result here..."></textarea>

最佳答案

您需要转义括号:htmlEditor.focus\(\);。我还建议 \s* 而不是带有一堆空格的 \n ,但这取决于你。只需确保使用正确数量的空格(12 个,而不是 8 个,对于您给出的示例),或者使用 \n * 确保必须有一个换行符,然后允许任何数字跟随它的空间。

请参阅下面的工作代码:

$(document).ready(function() {
  var editor  = $(".editor"),
      preview = $(".preview");
  
  // Remove new line and insert new line showing the text in value
  editor.keyup(function() {
    preview.val( this.value.replace(/;\s*htmlEditor.focus\(\);/g,".focus();") )
  }).click(function() {
    this.select()
  })
  
  // Easily Select Converted Code
  preview.click(function() {
    this.select()
  })
  
    preview.val( editor.val().replace(/;\s*htmlEditor.focus\(\);/g,".focus();") )
})
body {
  margin: 0;
  background: #333;
}

.editor, .preview {
  position: absolute;
  width: 50vw;
  height: 100vh;
  padding: 1em;
  border: 0;
  border-radius: 0;
  resize: none;
}

.editor {
  left: 0;
  color: #0b0;
  background-color: #000;
}

.preview {
  right: 0;
  background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea class="editor" placeholder="Code with multiple lines here...">            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();            htmlEditor.replaceSelection("{" + selected_text + "}");
            htmlEditor.focus();</textarea>
<textarea class="preview" placeholder="Generated result here..."></textarea>

关于javascript - 轻松替换值中多行的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194175/

相关文章:

javascript - Typescript 2.0 命名空间文件不是模块

javascript - 调用函数时出现错误 "Uncaught TypeError: undefined is not a function"

r - 有条件地替换数据集 R 上的值

Python - 将字符串格式化为 url 的最短方法

c# - 为什么 .* 无法匹配此正则表达式中的整个(其余)字符串?

linux - Perl 正则表达式递归替换多个文件组中的字符串,如 "*.php" "*.html"

javascript - 呈现选择时的ReactJS setState

javascript - jQuery 选择器 NOT

regex - bash 脚本中的 Perl 命令不是解释命令(它实际上是替换它)

java - 根据条件验证包含某些特殊字符的文本的正则表达式