我想只在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)一些
我需要
(文本,文本)
试试regex:
str.match(/\([A-Za-z]*\)/g); // will match all occurrences
您可以在[]
中添加更多部分,具体取决于您需要匹配的内容。例如,如果要包含数字,请使用0-9
。只是避免使用.*
,因为这将匹配像"(test) nope! (test)"
一样的块。
从本质上讲,这个正则表达式的要点是你想要括号内的所有大写/小写字母。括号必须被转义(因此\(
而不是(
),因为括号代表正则表达式中的分组。
要仅使用split()
(假设字符串中只有一个这样的模式):
str.split('(')[1].split(')')[0]
..并使用RegEx:
str.match(/\([a-z]*\)/ig) // returns array containing all matches
只需尝试\(.*?\)
(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])
}
}