在字符串中的括号之间搜索内容

时间:2017-11-29 15:08:51

标签: javascript arrays string split indexof

我想只在inside()中找到文本,但indexOf返回完整的键值

var str = "some textsome textsome text(texttext)some text"
var arrSplit = str.split(' ')
for(var i = 0; i < arrSplit.length; i++){
    if(arrSplit[i].indexOf('(') >= 0) {
        console.log(arrSplit[i])
    }
}

结果

  

文本(texttext)某些

我需要

  

(texttext)

3 个答案:

答案 0 :(得分:1)

仅使用split()(如果字符串中只有一个这样的模式):

str.split('(')[1].split(')')[0]

..并使用RegEx:

str.match(/\([a-z]*\)/ig)        // returns array containing all matches

答案 1 :(得分:1)

尝试regex

str.match(/\([A-Za-z]*\)/g); // will match all occurrences

您可以在[]中添加更多部分,具体取决于您需要匹配的内容。例如,0-9如果要包含数字。请避免使用.*,因为这会匹配"(test) nope! (test)"之类的内容。

基本上,这个正则表达式的要点是你想要括号内的所有大写/小写字母。必须对括号进行转义(因此\(而不是(),因为括号表示正则表达式中的分组。

答案 2 :(得分:1)

只需尝试\(.*?\)RegEx)。

var str = "some textsome textsome text(texttext)some text"
str = str.match(/\(.*?\)/);
console.log(str[0]);

适用于您的实施:

var str = "some textsome textsome text(texttext)some text"
var arrSplit = str.split(' ')
for(var i = 0; i < arrSplit.length; i++){
    if(arrSplit[i].indexOf('(') >= 0) {
        var res = arrSplit[i].match(/\(.*?\)/);
        console.log(res[0])
    }
}