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

问题描述 投票:0回答:3

我想只在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)一些

我需要

(文本,文本)

javascript arrays string split indexof
3个回答
1
投票

试试regex

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

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

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


1
投票

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

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

..并使用RegEx:

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

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])
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.