如何在javascript中替换引号内的字符串?

如何在javascript中替换引号内的字符串?,javascript,jquery,Javascript,Jquery,我在javascript/jQuery字符串中有这个字符串(这个字符串是从html($(“#shortcode'))元素值中获取的,如果用户单击一些按钮,这些元素值可以更改) 在一个文本框(名为incl_sc)中,我有以下值: include cols="2,4" 我想用文本框中的值替换上述字符串中的include_cols=“1,2,4” 基本上是这样的: 如何在此处替换include_cols值?(include_cols=“2,4”而不是include_cols=“1

我在javascript/jQuery字符串中有这个字符串(这个字符串是从html(
$(“#shortcode')
)元素值中获取的,如果用户单击一些按钮,这些元素值可以更改)

在一个文本框(名为
incl_sc
)中,我有以下值:

include cols="2,4"
我想用文本框中的值替换上述字符串中的
include_cols=“1,2,4”

基本上是这样的: 如何在此处替换include_cols值?(
include_cols=“2,4”
而不是
include_cols=“1,2,4”
)我在很多方面都很出色,但regex不是其中之一。我想这里应该用正则表达式

我正在尝试这个:

var s = $('#shortcode').html();

//I want to replace include cols="1,2,4" exclude cols="3" 
//with include_cols="1,2" exclude_cols="3" for example
s.replace('/([include="])[^]*?\1/g', incl_sc.val() ); 

但是我没有得到任何替换(字符串s与$(“#shortcode”).html()是同一个字符串。显然我在做一些非常愚蠢的事情。请帮助:-)

首先,我认为您需要删除引号并修复一点正则表达式

const r=/(include\cols=\”(.*)(\”)/g;
s、 替换(r,`1${incl_sc.val()}$3`)
基本上,我对第一部分和最后一部分进行分组,以便在替换结束时包含它们。您还可以避免创建第一个组和最后一个组,并将其逐字放入replace函数的最后一个参数中,如下所示:

const r=/include\u cols=\“(.*)\”/g;
s、 替换(r,`include_cols=“${incl_sc.val()}”`)

首先,我认为您需要删除引号并修复一点正则表达式

const r=/(include\cols=\”(.*)(\”)/g;
s、 替换(r,`1${incl_sc.val()}$3`)
基本上,我对第一部分和最后一部分进行分组,以便在替换结束时包含它们。您还可以避免创建第一个组和最后一个组,并将其逐字放入replace函数的最后一个参数中,如下所示:

const r=/include\u cols=\“(.*)\”/g;
s、 替换(r,`include_cols=“${incl_sc.val()}”`)

简而言之,您需要的是

s.replace(/include cols="[^"]+"/g, incl_sc.val());
你的代码有几个问题

  • 要将正则表达式与
    String.prototype.replace
    一起使用,必须将正则表达式作为第一个参数传递,但实际上传递的是字符串

    这是一个regex文本
    /regex/
    ,而这不是
    '/实际上是一个字符串/'

  • 在您的问题中提供的文本中,
    include\cols
    写为
    include cols
    (带空格)

  • 你的正则表达式是错误的。我建议在这里对它们进行测试,如果您愿意,还可以从中了解更多信息


上面的代码将用
文本区域中的任何内容替换零件
include cols=“1,2,3”
,而不管引号之间有什么内容(只要它不包含另一个引号)。

简而言之,您需要的是

s.replace(/include cols="[^"]+"/g, incl_sc.val());
你的代码有几个问题

  • 要将正则表达式与
    String.prototype.replace
    一起使用,必须将正则表达式作为第一个参数传递,但实际上传递的是字符串

    这是一个regex文本
    /regex/
    ,而这不是
    '/实际上是一个字符串/'

  • 在您的问题中提供的文本中,
    include\cols
    写为
    include cols
    (带空格)

  • 你的正则表达式是错误的。我建议在这里对它们进行测试,如果您愿意,还可以从中了解更多信息

上述代码将用
文本区域中的任何内容替换零件
include cols=“1,2,3”
,而不考虑引号之间的内容(只要它不包含另一个引号)