2011-01-08 86 views
2

,我需要选择使用javascript就是圆括号之间的文本,并将其包装都在一个跨度:选择文本

<p>Just some text (with some text between brackets) and some more text</p> 

应该变成:

<p>Just some text <span class="some-class">(with some text between brackets)</span> and some more text</p> 

我认为像这样应该可能使用正则表达式,但我完全不熟悉在JavaScript中使用正则表达式。有人可以帮忙吗?谢谢!

回答

0
oldString = '<p>Just some text (with some text between brackets) and some more text</p>'; 
newString = oldString.replace(/\((.*?)\)/g, '<span class="some-class">($1)</span>'); 
0

试试这个:

<p id="para">Just some text (with some text between brackets) and some more text</p> 
<input type="button" value="Change Text" onclick="ChangeText()"/> 
<script> 
    function ChangeText() 
    { 
     var para = document.getElementById("para"); 
     var text = para.innerHTML; 
     para.innerHTML = text.replace(/(.*)(\(.*\))(.*)/g, "$1<span class=\"some-class\">$2</span>$3") 
    } 
</script> 
+0

你不需要3个捕获组。只是不匹配字符串的其余部分。 – Amber 2011-01-08 01:24:55

2

这应该做的伎俩(str是串保持你要操作的文本):

str.replace((\([^()<>]*\)), "<span class=\"some-class\">$1</span>"); 

它不允许()<或括号内的>。这可以避免嵌套问题和html标签落在括号的中间。您可能需要调整它以符合您的确切要求。

由于您刚开始使用正则表达式,因此如果您想了解更多信息,我建议您阅读http://www.regular-expressions.info/

0

使用RegExp对象:

var str = "<p>Just some text (with some text between brackets) and some more text</p>"; 
var re = new RegExp("\(+(.*)\)+", "g"); 
var myArray = str.replace(re,"<span class="some-class">($1)</span>"); 

使用文字:

var myArray = str.replace(/\(+(.*)\)+/g,"<span class="some-class">($1)</span>")