给出一个字符串:
</gd:organization><gd:email rel='http://schemas.google.com/g/2005#other' address='CM@Aart.com'/><gd:email rel='http://schemas.google.com/g/2005#other' address='da@ammeart.com' primary='true'/><gd:phoneNumber rel='http://schemas.google.com/g/2005#work'>011 360 51 60</gd:phoneNumber>
我需要从字符串中删除:
<gd:email rel='http://schemas.google.com/g/2005#other' address='CM@Aart.com'/>
- 基于与CM@Aart.com
的匹配。
必须在基本的JavaScript中完成,我无法导入任何特殊的解析工具。我似乎无法找到一个没有错误的组合。
谢谢!
答案 0 :(得分:0)
这很简单,请告诉您是否需要进行任何更改:
var inputString = "</gd:organization><gd:email rel='http://schemas.google.com/g/2005#other' address='CM@Aart.com'/><gd:email rel='http://schemas.google.com/g/2005#other' address='da@ammeart.com' primary='true'/><gd:phoneNumber rel='http://schemas.google.com/g/2005#work'>011 360 51 60</gd:phoneNumber>";
var outputString = inputString.split("CM@Aart.com")[1].substring(3);
alert(outputString);
我已经为它发布了JSFiddle。
答案 1 :(得分:0)
如果必须在RegExp中执行此操作,如果您知道所有<gd:email>
部分都具有地址属性,则可以尝试类似以下 的内容,引号为'
且结束/>
,但address='
或/>
出现在这些属性的任何值内。
"</gd:organization><gd:email rel='http://schemas.google.com/g/2005#other' address='CM@Aart.com'/><gd:email rel='http://schemas.google.com/g/2005#other' address='da@ammeart.com' primary='true'/><gd:phoneNumber rel='http://schemas.google.com/g/2005#work'>011 360 51 60</gd:phoneNumber>"
.replace(
/<gd:email .*?address='([^']*)'.*?\/>/g, // match email node
function (a, b) { // replacement logic
if (b === 'CM@Aart.com') return '';
return a;
}
);
正如我在my comment中所说,实现这一目标的最佳方法实际上是使用DOMParser
本地JavaScript XML解析器,但是你给我们的字符串不是有效的XML,因为它开始贴有标签。