用于提取文本字段的正则表达式

时间:2013-02-01 20:18:11

标签: javascript regex

提取文本的正则表达式是什么?#28; 28 John Young Pkwy"来自这个HTML。

28 N John Young Pkwy<br />              
<span class="locality">Kissimmee</span>,                    
<span class="region">FL</span>                  
<span class="postal-code">34741</span>

地址每次都会有所不同,所以我在标签之前寻找与通用文字相匹配的内容。数据格式始终相同。我正在使用JavaScript。我还在研究如何将它输入到构造函数中。应该是这样的:

var re = new RegExp("^.*?(?=<br />)");
var m = re.exec(textabove);

3 个答案:

答案 0 :(得分:1)

/^[^<]*/应该可以正常工作(你可以在regexpal.com上验证 - 删除斜杠)

编辑:只有在您提取的数据中没有<时才会生效,但它比使用正面预测和/或懒惰的其他答案更有效。

编辑2:在这里,有一个jsfiddle

答案 1 :(得分:0)

这在javascript(1.5或更高版本)中并不难:

<div id='address'>
    28 N John Young Pkwy<br />              
    <span class="locality">Kissimmee</span>,                    
    <span class="region">FL</span>                  
    <span class="postal-code">34741</span>
</div>
var re = new RegExp(".*?(?=<br>)");
var m = re.exec($('#address').html());
alert(m[0]);

请参阅此处的示例代码:http://jsfiddle.net/dnx2B/

老实说,没有正则表达式会更容易:

alert($('#address')[0].firstChild.data); // returns exactly the same thing.

答案 2 :(得分:0)

如果您只是在<br>之前查找文字,那么这样的内容应该有效:

^(.*?)<br