2016-12-01 112 views
0

我有一个很长的xml原始消息存储在一个字符串格式。样本如下。匹配一个JS字符串与正则表达式

<tag1>val</tag><tag2>val</tag2><tagSomeNameXYZ/> 

我期待搜索这个字符串,并找出它是否包含一个空的HTML标签,如<tagSomeNameXYZ/>。这个东西是,SomeName的值可以根据上下文而改变。我试过使用Str.match(/tagSomeNameXYZ/g)Str.match(/<tag.*.XYZ\/>/g)来确定它是否包含那个字符串,但是能够让它返回任何东西。我无法以书面匹配类似<tag*XYZ/>,其中*将是SomeName(我没兴趣)

铊一个reg前;博士:我如何从字符串过滤掉<tagSomeNameXYZ/>。格式之中:<constant variableName constant/>

示例模式,它应该符合:

<tagGetIndexXYZ/> 
<tagGetAllIndexXYZ/> 
<tagGetFooterXYZ/> 
+1

不要用正则表达式解析XML。解析它并遍历DOM,或者使用带有'document.evaluate'的XPath来找到你正在寻找的东西。 – 2016-12-01 06:50:09

回答

0

你有Str.match(/<tag.*.XYZ\/>/g)的问题是,*采取它看到的一切,当你希望不会在XYZ停止。所以你需要找到一种方法来停止(例如,[^/]*意味着要继续下去,直到你找到/),然后从那里回来(slice)。

这是否帮助

testString = "<tagGetIndexXYZ/>" 
 
res = testString.match(/<tag([^/]*)\/\>/)[1].slice(0,-3) 
 
console.log(res)

+0

谢谢。让我试试这个。你能简单地解释一下它做了什么吗?特别是切片部分。 – blueren

+0

最后删除XYZ。如果你最后的常数不同,你需要将-3改为别的 –

+0

请投票的人提供更好的解决方案,以便我们都可以学习? –