2012-08-07 138 views
1

我有以下几点:删除所有正则表达式

<span class="hello" id="something somemore"> blah blah blah </span> 

我的正则表达式是不是我的能力最强,将不胜感激是有人可以帮助我在JavaScript正则表达式。

我想删除所有/任何东西,包括从<span>,然后最后删除</span>

我使用.replace(myregexhere, "");来取代其他项目,但我正在努力做到上述。

此外,如果有更容易或更好的替代方案让我知道。

+0

为什么不只是删除元素本身? – 2012-08-07 16:30:09

+3

他希望文本保留 – 2012-08-07 16:30:48

+0

是的,我希望文本保留 – Anicho 2012-08-07 16:32:01

回答

6

如果你真的想用正则表达式替换,试试这个:

var newstring = oldstring.replace(/<span[^>]*>([^<]*)<\/span>/, "$1"); 

请注意,如果任何HTML标签是<span></span>之间的这种不起作用。如果您有html标记,请使用this等。

+0

用'(。*)'替换'([^ <] *)',并在末尾添加'^'和'$'锚点。然后'*'的贪婪匹配将确保即使''包含标记,正则表达式仍然有效。 – Deestan 2012-08-07 16:55:34

+0

@Deestan我假设''块中没有标记。此外,为了防止我想进行贪婪匹配,为什么需要'^'和'$'? – speakr 2012-08-07 17:21:58

+0

对于贪婪的匹配,他们并不是真正需要的,那只是我有点厚。 – Deestan 2012-08-07 17:51:32

1

你想要的东西,如:

~<span.+?>~ 

~</span>~ 
1

为什么不使用replaceWith()代替:

var something = $('#something').text(); 
$('#something').replaceWith(something); 
+0

我正在执行此操作,但使用'.html()',然后在操作后将其替换。我的操控是需要我去除跨度的。 – Anicho 2012-08-07 16:35:26

-1

使用jQuery:

$('span').remove(); 

或每个跨度类“你好”:

$('span .hello').remove(); 

或ID为每个元素“的东西somemore”,

$("#something somemore").remove(); 
+0

你的jQuery不正确,你没有回答这个问题。 – 2015-04-08 17:22:36

相关问题