匹配一个JS字符串与正则表达式
我有一个很长的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/>
你有Str.match(/<tag.*.XYZ\/>/g)
的问题是,*采取它看到的一切,当你希望不会在XYZ停止。所以你需要找到一种方法来停止(例如,[^/]*
意味着要继续下去,直到你找到/
),然后从那里回来(slice
)。
这是否帮助
testString = "<tagGetIndexXYZ/>"
res = testString.match(/<tag([^/]*)\/\>/)[1].slice(0,-3)
console.log(res)
谢谢。让我试试这个。你能简单地解释一下它做了什么吗?特别是切片部分。 – blueren
最后删除XYZ。如果你最后的常数不同,你需要将-3改为别的 –
请投票的人提供更好的解决方案,以便我们都可以学习? –
不要用正则表达式解析XML。解析它并遍历DOM,或者使用带有'document.evaluate'的XPath来找到你正在寻找的东西。 – 2016-12-01 06:50:09