2013-07-19 34 views
0

我有这个正则表达式^<+[a-zA-z=\" ]+>我需要它来替换此字符串中的文本<span class="myclass">Some text< /span>javascript正则表达式错误

我只是想删除的跨度和获取Some text,这是我的代码:

var text = "<span class=\"myclass\">Some text</span>"; 
var myText = text.replace(/^<+[a-zA-z=\" ]+>/,"").replace("</span>",""); 

我搜索了这一个小时左右,但我不能找到我的地方是错误。请注意,我只是不能输入span标签,所以我在它们的开放式支架前做了空格。

而且我知道我可以键入:

var someVar = $(".myClass").html(); 

,但我需要的正则表达式,所以请大家帮帮我!

+0

你能解释更多关于上下文吗?使用DOM操作会更容易,更不容易出错。此外,如果要直接显示span标签,则只需将文本格式设置为代码即可。到目前为止,您的文本是否真的包含空格('< span ...> ... < /span>')或不是。 –

+0

是的,我知道,我正在使用DOM操作(即第二个jQuery代码),这就是为什么我的正则表达式没有完成这项工作?因为我用正则表达式测试器测试了它,它在那里工作,所以我不明白为什么在这里它不是。我只想找到我的错误在哪里:) –

+0

如果我假设你的文本实际上是'>一些文本'那么*正则表达式*工作正常(请参阅http:// jsfiddle .net/aWHkj/2 /,它将删除开头的''标签)。只删除结束的''标签不起作用,因为您的搜索字符串中有一个尾部空格:“”“'。如果我删除它似乎工作正常:http://jsfiddle.net/aWHkj/。既然你没有解释*问题是什么,我不知道这是否有帮助。 –

回答

1

如果你只是想什么是第一间坐着>和下<,你可以做这样的事情:

var myText = text.replace(/^[^>]*>([^<]*).*/, "$1"); 

Here is a jsfiddle for it。如果你想使这个特定于span,你可以改变正则表达式的前导部分以包含跨度。如上所述,如果您在DOM中这样做,那么坚持现有的DOM操作功能会更安全一些。

+0

这完成工作:)谢谢!但我真的想知道为什么那个顶级的不起作用。感谢您的快速回复! –