Javascript 减少特定字符的正则表达式

Javascript 减少特定字符的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我有这个HTML标记,我如何使用正则表达式将“放在字母c之后 HTML: 正则表达式:/\=\s*[“”](.*)[^”“”]\s*\>/g 替换:=“$1”> 怎么样 str.replace(/href="[^\s>"]+/, function(match) { return match+'"' }); 怎么样 str.replace(/href="[^\s>"]+/, function(match) { return match+'"' }); 我建议如下: str.re

我有这个HTML标记
,我如何使用正则表达式将放在字母c之后

HTML:

正则表达式:
/\=\s*[“”](.*)[^”“”]\s*\>/g

替换:=“$1”>

怎么样

str.replace(/href="[^\s>"]+/, function(match) { return match+'"' });
怎么样

str.replace(/href="[^\s>"]+/, function(match) { return match+'"' });

我建议如下:

str.replace(/=\s*["']([^"']*?)\s*?(?=>)/g,'="\1"');
这在第二个
已经存在的情况下也应该有效。它还允许在
=
和字符串开头之间使用空格

请参见此处以获取演示:

另一个问题可能是以下情况:

<a href="abc def > google </a>

我的解决方案将把它变成

<a href="abc def"> google </a>


但是,当然,这一解决方案有其局限性,到目前为止还不是无懈可击的。它将只对每个标记的最后一个属性起作用(因为regexp中有lookahead
(?=>)

我建议如下:

str.replace(/=\s*["']([^"']*?)\s*?(?=>)/g,'="\1"');
这在第二个
已经存在的情况下也适用。它还允许在
=
和字符串开头之间使用空格

请参见此处以获取演示:

另一个问题可能是以下情况:

<a href="abc def > google </a>

我的解决方案将把它变成

<a href="abc def"> google </a>


但是,当然,这个解决方案有其局限性,而且到目前为止还不是无懈可击的。它只对每个标记的最后一个属性起作用(因为regexp中的lookahead
(?=>)
).

事实上,我正在进行一些测试,以了解匹配变量是如何填充的,但这是一个很好的简短解决方案。不幸的是,如果第二个
已经就位,如
,它将失败。这将变成
好位置。我会想出一个解决办法,但你的答案已经涵盖了它。实际上,这是可行的,我正在做一些测试,看看,我不明白匹配变量是如何填充的,但感谢这是一个又好又短的解决方案。不幸的是,如果第二个
已经在
中,它将失败。这将被更改为
好位置。我会想到一个修复方法,除非您的答案已经涵盖了它。