我对Regex很新,我试图删除括号外的所有文本,只保留括号内的所有内容。
例如1,
Hello,this_isLuxy.(example)
到此:
(example)
示例2:删除句点后的所有内容
luxySO_i.example
到此:
luxySO_i
使用JS + Regex?非常感谢!
答案 0 :(得分:2)
对于这个简单的字符串,您可以使用indexOf
和substring
函数:
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(/\..*/, "")
含义:
\.
点字符(.
是特殊字符,否则表示“任何字符”).*
任何字符的任何序列(即直到字符串结尾的所有内容)将其替换为空字符串