2014-04-28 104 views
3

我想用單引號替換HTML屬性雙引號。例如:用JavaScript中的正則表達式替換HTML屬性值

如果輸入的是:

<a onclick="Track("http://www.example.com")">Track Me</a> 

輸出將是:

需求
<a onclick='Track("http://www.example.com")'>Track Me</a> 

這裏onclick="Track("http://www.example.com")"onclick='Track("http://www.example.com")'被替換,即這裏唯一的變化是onclick="..."被替換onclick='...'

在我的情況下,從HTML編輯器中檢索內容,其內容需要使用JavaScript在客戶端進行清理。我現在想到的唯一方法是我需要使用Regex來替代單引號屬性的雙引號屬性,並且它只應當在onclick屬性中使用「跟蹤」功能時纔會發生。

我已經試過類似:jsFiddle

我尋找的任何解決方案。任何幫助,高度讚賞。

謝謝。

+1

肯定是有沒有辦法修改編輯器來正確地存儲呢? – Marty

+0

HTML只是**錯誤**。用您喜歡的任何編輯器更改源代碼。 –

+0

事實上,你需要使用RegEx來解析HTML意味着你做錯了。 – setec

回答

0

如果水溼改變別人,然後改變自己。 所以在這裏,我們去:

var str = '<a onclick="Track("http://www.example.com")">Track Me</a>'; 

console.log(str.replace(/onclick="Track\("([^"]+)"\)"/, 'onclick=\'Track("$1")\'')); 
+0

謝謝。正則表達式從我工作。我只是將其修改爲:'/ onclick =「Track \(」([\ s \ S] +)「\)」/' –

0

如果你仍然在尋找正則表達式,你可以使用這個例子。它會給你一個鏈接<a onclick="Track('http://www.example.com')">Track Me</a>

var s = '<a href="#" target="_blank" 
     onclick="Track("http://www.example.com/")">Test Link</a>'; 

var p = s.replace(/(onclick=")(.*)(\")/,function(match,prefix,handler,suffix){ 
    return prefix + handler.replace(/"/g,'\'') + suffix; 
}); 

console.log(p); 

而且fiddle的演示;

我沒看到,你看<a onclick='Track("http://www.example.com")'>Track Me</a>版本,所以你可以在上面的代碼更改與此行

var p = s.replace(/(onclick=")(.*)(\")/,function(match,prefix,handler,suffix){ 
    return prefix.replace(/"/,'\'') + handler + suffix.replace(/"/,'\''); 
});