[英]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.