2017-03-06 42 views
0

比方说,我有一个字符串s = "xxx -I hello yyy,我想提取给出hello提取一个字符串的子串,给定之前的子串(标志?)

E.g.我想提出一个功能,说findToken那就是:

function findToken(msg, flag, regexp) { 
    return msg.match(new RegExp(flag + '\\s' + regexp, 'g')); 
} 

,然后当我打电话findToken("xxx -I hello yyy", "-I", "\\w+");我现在得到:

["-I hello"],不过,我想获得公正['hello'],即。无视国旗。我将如何使用RegExp完成此操作?

+1

使用捕捉集团,并获得其价值。 –

+0

见https://jsfiddle.net/qapoob25/ –

回答

1

您可以翻转使用EXEC,添加捕获组,并在新的数组中返回第一个捕捉:

function findToken(msg, flag, regexp) { 
 
    return [new RegExp(flag + '\\s(' + regexp + ')', 'g').exec(msg)[1]]; 
 
} 
 

 
var result = findToken("xxx -I hello yyy", "-I", "\\w+"); 
 
console.log(result);

0

function findToken(msg, flag, regexp) { 
 
var match=msg.match(new RegExp(flag + '\\s' + regexp, 'g')); 
 
    return match[0].replace(flag+' ',''); 
 
} 
 
console.log(findToken("xxx -I hello yyy", "-I", "\\w+"));

相关问题