正则表达式匹配字符串?

时间:2013-04-23 07:10:08

标签: javascript regex

这是我的代码:

var str="<table><tr><td>abraham</td></tr></table>";

如何通过匹配td获取亚伯拉罕

我尝试但失败了,我不想匹配tabletr,我只希望匹配td

<!DOCTYPE html>
<html>
<body>

<script>
var str="<table><tr><td>anilkumar</td>";
var patt1=/<td>(\w+)<\/td>/;
document.write(str.match(patt1));
</script>

</body>
</html>

它ruturns null

5 个答案:

答案 0 :(得分:1)

使用此:

var str="<table><tr><td>abraham</td></tr></table>";
var result = str.match(/<td>(\w+)<\/td>/); //"abraham"
document.write(result[1]);

修改:如果您可以使用td之间的特殊字符(如空格):

var str="<table><tr><td>abraham asd</td></tr></table>";
var result = str.match(/<td>(.*?)<\/td>/); //"abraham asd"
document.write(result[1]);

Live demo.

答案 1 :(得分:1)

这应该符合您的需求:

<td>(.*?)</td>

演示here

答案 2 :(得分:1)

基本上它是&gt;之间的非空白和&lt;。试试,如果

  

&GT;?\ S(\ W +)\ S&LT;

满足您的需求。

答案 3 :(得分:0)

使用此表达式:^<\s*(td|TD)\s*(\w|\W)*\s*>(\w|\W)*</(td|TD)>$

这个匹配 * 在html中,所以任何其他html标记都只是对此做了一点改动

完美匹配:<td>hello kitty</td> OR <TD WIDTH='20></TD> OR <TD >&NBSP;</td>

答案 4 :(得分:0)

您可以使用createElementinnerHTMLtextContent

var dummy = document.createElement('div');
dummy.innerHTML = str;
var text = dummy.textContent;

或者,使用像jQuery这样的库(可以更好地跨浏览器工作):

var text = $(str).text();

两者的工作示例:http://jsbin.com/acuyoq