[英]replace " using String.replace() with regex
我有以下字符串
"content \" content <tag attr1=\"val1\" attr2=\"val2\">content \" content</tag> content \" content"
我想替换所有"
内部标签定义字符'
与使用的字符String.replace()
函数。 "
标签内容中的字符必须保持其目前的形式。
"content \" content <tag attr1='val1' attr2='val2'>content \" content</tag> content \" content"
也许正则表达式可以与某些分组一起使用?
您可以使用replace()
和正则表达式回调为您执行此操作:
var str = 'content " content <tag attr1="val1" attr2="val2">content " content</tag> content " content';
function replaceCallback(match) {
return match.replace(/"/g, "'");
}
str = str.replace(/<([^>]*)>/g, replaceCallback);
正则表达式将匹配字符串中<
和>
字符之间的任何内容,并将匹配项传递给replaceCallback()
方法,该方法将根据需要将"
替换为'
字符。
编辑: replaceCallback()
使用的是.replace('"', "'")
,但这只会替换第一个"
。 我已经对其进行了更新以使用正则表达式替换,并且现在可以按需运行了。
以下代码(从该问题的公认答案中获取)也可以使用,无需回调,但使用不易理解的正则表达式。
var str = 'content " content <tag attr1="val1" attr2="val2">content " content</tag> content " content';
str = str.replace(/"(?=[^<]*>)/g, "'");
var str = "content \" content <tag attr1=\"val1\" attr2=\"val2\">content \" content</tag> content \" content";
var replaced = str.replace(/\<.*?\>/g, function(match, index){
return match.replace(/"/g, "'"); // `match` will be each tag , both opening and closing.
});
您不能只使用一个正则表达式,而必须使用一种组合。 这是要走的路:
向你致敬! 不管你是谁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.