嘿我正在尝试用
javascript中的正则表达式做一些非常具体的事情,而我的regexp-foo充其量只是shakey.想知道是否有任何专业人士可以指出我正确的方向.所以我有一些文字……
<item id="myid1">myitem1</item> <item id="myid2">myitem2</item>
…等等
我想将它删除成一个读取的数组
myid1,myitem1,myid2,myitem2,….等
永远不会有嵌套元素,因此没有递归嵌套问题.有人能够迅速将其击败吗?
谢谢你的帮助!
解决方法
这是一个正则表达式:
>匹配起始和结束标记元素名称
>提取id属性的值
>提取标签的内部html内容
注意:
我在这里匹配属性值时很懒.它需要用双引号括起来,属性名和它的值之间不需要空格.
<([^\s]+).*?id="([^"]*?)".*?>(.+?)</\1>
在javascript中运行正则表达式就像这样:
search = '<item id="item1">firstItem</item><item id="item2">secondItem</item>'; regex = new RegExp(/<([^\s]+).*?id="([^"]*?)".*?>(.+?)<\/\1>/gi); matches = search.match(regex); results = {}; for (i in matches) { parts = regex.exec(matches[i]); results[parts[2]] = parts[3]; }
在结束时,结果将是一个看起来像这样的对象:
{ "item1": "firstItem","item2": "secondItem" }
YMMV如果< item>元素包含嵌套的HTML.