1

给定一个字符串,如:

</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 中完成,我无法导入任何特殊的解析工具。我似乎找不到不会出错的组合。

谢谢!

4

2 回答 2

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

于 2013-02-02T00:38:28.067 回答
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;
    }
);

正如我在评论中所说,实现这一点的最佳方法实际上是使用DOMParser原生 JavaScript XML 解析器,但您给我们的字符串不是有效的 XML,因为它以关闭标记开头。

于 2013-02-02T00:40:12.773 回答