如何在javascript中替换或删除括号内的所有文本字符串

时间:2015-10-04 08:26:52

标签: javascript regex

我对Regex很新,我试图删除括号外的所有文本,只保留括号内的所有内容。

例如1,

Hello,this_isLuxy.(example)

到此:

(example)

示例2:删除句点后的所有内容

luxySO_i.example

到此:

luxySO_i

使用JS + Regex?非常感谢!

2 个答案:

答案 0 :(得分:2)

对于这个简单的字符串,您可以使用indexOfsubstring函数:

var openParenthesisIndex = str.indexOf('(');
var closedParenthesisIndex = str.indexOf(')', openParenthesisIndex);
var result = str.substring(openParenthesisIndex, closedParenthesisIndex + 1);

好的,如果你想使用正则表达式,那么它会有点复杂。无论如何,你走了:

var str = "Hello,this_(isL)uxy.(example) asd (todo)";
var result = str.replace(/[^()](?=([^()]*\([^()]*\))*[^()]*$)/g, '');
console.log(result); // "(isL)(example)(todo)"

简而言之,这将取代任何非()字符,后跟零或更多平衡括号。但是,对于嵌套或非平衡括号,它将失败。

答案 1 :(得分:1)

要仅保留括号内的内容,您可以使用

s.replace(/.*?(\([^)]*\)).*?/g, "$1")

意思是:

  • .*?任何char的任何序列(但最短的序列)
  • \(一个左括号
  • [^)]*零个或多个不是闭括号的字符
  • \)一个近似括号
  • .*?任何char的任何序列(但可能最短)

这三个中间元素是使用分组(...)$1保留的内容。

要删除第一个句点后的所有内容,表达式就是:

s.replace(/\..*/, "")

含义:

  • \.点字符(.是特殊字符,否则表示“任何字符”)
  • .*任何字符的任何序列(即直到字符串结尾的所有内容)

将其替换为空字符串