Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中选择圆括号之间的文本_Javascript_Html_Regex - Fatal编程技术网

在javascript中选择圆括号之间的文本

在javascript中选择圆括号之间的文本,javascript,html,regex,Javascript,Html,Regex,我需要使用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)

我需要使用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>
只有一些文本(括号中有一些文本)和更多的文本

我认为使用regex应该可以做到这一点,但我完全不熟悉在javascript中使用regex。有人能帮忙吗?谢谢

oldString='只有一些文本(括号中有一些文本)和更多的文本;
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>');
newString=oldString.replace(/\(.*?\)/g'($1');
试试这个:

<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>

只有一些文本(括号中有一些文本)和更多的文本

函数ChangeText() { var para=document.getElementById(“para”); var text=para.innerHTML; para.innerHTML=text.replace(/(.*)(\(.*))(.*)/g,“$1$2$3”) }
这应该可以做到这一点(
str
是保存要操作的文本的字符串):

str.replace(\([^()]*\),“$1”);
它不允许括号内有
。这避免了嵌套问题和HTML标记在括号中落下。您可能需要调整它以满足您的确切需求

由于您不熟悉正则表达式,如果您想了解更多信息,我建议您阅读。

使用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 str=“只有一些文本(括号中有一些文本)和更多的文本

”; var re=new RegExp(“\(+(.*)\)+”,“g”); var myArray=str.replace(re,“($1)”);
使用文字:

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

您不需要3个捕获组。只是不匹配字符串的其余部分。
var myArray = str.replace(/\(+(.*)\)+/g,"<span class="some-class">($1)</span>")