我想只在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)
答案 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])
}
}