正则表达式替换总字符串

时间:2016-06-27 15:42:51

标签: javascript regex xml

我有和包含此字符串的项目的XML文件:

<field name="itemid">xx</field>

xx = 50到250之间的数字。

我需要从整个文件中删除整个字符串。

如何使用正则表达式replace执行此操作?

2 个答案:

答案 0 :(得分:0)

你可以用这个:

str = str.replace(/<.*>/g,'');

查看匹配here

的示例

var str = "<field name='itemid'>xx</field>";
str = str.replace(/<.*>/g, 'replaced');
console.log(str)

<强>解释

  • <字面匹配字符<
  • .*匹配任何字符(换行符除外)
    • 量词:*在零和无限次之间,尽可能多次,根据需要回馈[greedy]
  • >字面匹配字符>
  • g修饰符:全局。所有比赛(首场比赛时不返回)

如果您想要更具限制性,可以这样做:

str = str.replace(/<field name\=\"\w*\">\d*<\/field>/g, '');

查看匹配here

的示例

var str = '<field name="test">200</field>';
str = str.replace(/<field name\=\"\w*\">\d*<\/field>/g, 'replaced');
console.log(str)

<强>解释

  • <field名称与字符匹配
  • \=字面匹配字符=
  • \"字面匹配字符"
  • \w*匹配任何字符[a-zA-Z0-9_]
    • 量词:*在零和无限次之间,尽可能多次,根据需要回馈[greedy]
  • \"匹配字符“字面意思
  • >字面匹配字符>
  • \d*匹配数字[0-9]        - 量词:*在零和无限次之间,尽可能多次,根据需要回馈[贪心]
  • <字面匹配字符<
  • \/字面匹配字符/
  • field>匹配字符字段&gt;字面意思(区分大小写)
  • g修饰符:全局。所有比赛(首场比赛时不返回)

答案 1 :(得分:0)

当您替换标记特别是XML标记时,您必须确保捕获从打开关闭标记的所有内容。在这种情况下,RegExp应该回顾

var re = /<(\S+)[^>]*>.*<\/\1>/g;
var m ='some text <ab id="aa">aa <p>qq</p> aa</ab>test test <p>paragraph </p>'.replace(re,'');
console.log(m);//some text test test 

\1匹配(\S+)
\S+一个或多个非空白字符