HTML&正则表达式,如何匹配逗号之间的文本与关键字

时间:2013-05-18 12:24:28

标签: javascript regex

我们说我们有<b>Location: </b> UK, England, London <br>

要使用(Location:+.*?<br\/?>)使用var location = document.body.outerHTML.match(/(Location:+.*?<br\/?>)/gi); //returns entire line with Location:**is working var country = document.body.outerHTML.match(/(Location:[^,]*)/gi); //returns UK, USA etc **is working var state = document.body.outerHTML.match(/(Location:???; //needs to return 'England' etc var city= document.body.outerHTML.match(/(Location:???; //needs to return 'London' etc 选择此行,这正在完成工作,但我需要做的是在单独的变量中返回逗号之间的三个元素。

变量是javascript,就像这样。

(Location:[^,]*)

我通过使用{{1}}成功获得了这个国家的回报'英国'如预期的那样,但我真的不知道如何修改它以返回'英格兰',然后再返回'伦敦'。

我已经看到了一些如何选择所有逗号的示例,但找不到任何可以帮助我指定如何在第二个和第三个逗号之后获取文本的内容,并使用特定关键字“Location:”。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用:

var tmp = document.body.outerHTML.match(
    /Location: <\/b> ([^,]+), ([^,]+), ([^,]+)/i
);

var country = tmp[1];
var state   = tmp[2];
var city    = tmp[3];

更新为也匹配逗号之间带空格的单词。

答案 1 :(得分:0)

您可以尝试通过引用父元素来简化问题:

<div id='parentElement'><b>Location: </b> UK, England, London <br /></div>

var arr=document.getElementById('parentElement').childNodes[1].nodeValue.split(',');

var country = arr[0];
var state   = arr[1];
var city    = arr[2];