59

如何my使用 JavaScript 中的正则表达式从以下句子中的两个圆括号之间检索单词?

“这是(我的)简单文本”

4

7 回答 7

117

console.log(
  "This is (my) simple text".match(/\(([^)]+)\)/)[1]
);

\(作为左大括号,(- 子表达式的开始,[^)]+- 除了右括号一次或多次(您可能希望替换+*),)- 子表达式的结尾,\)- 右大括号。返回一个从中提取第二个元素的match()数组。["(my)","my"]

于 2012-08-21T16:34:49.190 回答
16
var txt = "This is (my) simple text";
re = /\((.*)\)/;
console.log(txt.match(re)[1]);​

jsFiddle 示例

于 2012-08-21T16:35:35.010 回答
13

您也可以尝试非正则表达式的方法(当然如果有多个这样的括号,它最终将需要循环,或正则表达式)

init = txt.indexOf('(');
fin = txt.indexOf(')');
console.log(txt.substr(init+1,fin-init-1))
于 2012-08-21T16:41:22.713 回答
6

对于希望在多个括号中返回多个文本的任何人

var testString = "(Charles) de (Gaulle), (Paris) [CDG]"
var reBrackets = /\((.*?)\)/g;
var listOfText = [];
var found;
while(found = reBrackets.exec(testString)) {
  listOfText.push(found[1]);
};
于 2020-05-25T09:12:06.210 回答
4

使用它来获取最接近(和之间的文本)

const string = "This is (my) (simple (text)"
console.log( string.match(/\(([^()]*)\)/)[1] )
console.log( string.match(/\(([^()]*)\)/g).map(function($0) { return $0.substring(1,$0.length-1) }) )

结果my["my","text"]

解释

--------------------------------------------------------------------------------
  \(                       '('
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [^()]*                   any character except: '(', ')' (0 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  \)                       ')'
于 2021-05-09T22:53:54.110 回答
1

从字符串公式中获取字段。

var txt = "{{abctext/lsi)}} = {{abctext/lsi}} + {{adddddd}} / {{ttttttt}}";
re = /\{{(.*?)\}}/g;
console.log(txt.match(re));
于 2021-02-15T14:55:47.113 回答
0

返回圆括号内的多个项目

 var res2=str.split(/(|)/);

  var items=res2.filter((ele,i)=>{
  if(i%2!==0) {
  return ele;
  }
});
于 2020-06-30T12:02:21.157 回答