Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提取字符串的子字符串,给定先前的子字符串(标志?)_Javascript_Regex - Fatal编程技术网

Javascript 提取字符串的子字符串,给定先前的子字符串(标志?)

Javascript 提取字符串的子字符串,给定先前的子字符串(标志?),javascript,regex,Javascript,Regex,假设我有一个字符串s=“xxx-I hello yyy,我想提取hello给定的-I 例如,我想做一个函数,比如说findToken,即: function findToken(msg, flag, regexp) { return msg.match(new RegExp(flag + '\\s' + regexp, 'g')); } 然后当我调用findToken(“xxx-I hello yyy”、“-I”、“\\w+”)时;我现在得到: [“-I hello”],但是,我只想得

假设我有一个字符串
s=“xxx-I hello yyy
,我想提取
hello
给定的
-I

例如,我想做一个函数,比如说
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实现这一点?

函数findToken(msg、flag、regexp){
var match=msg.match(新RegExp(flag+'\\s'+RegExp,'g');
返回匹配项[0]。替换(标志+“”“”);
}

console.log(findToken(“xxx-I hello yyy”、“-I”、“\\w+”);
您可以切换到使用exec,添加捕获组,并在新数组中返回第一个捕获:

函数findToken(msg、flag、regexp){
返回[new RegExp(flag+'\\s('+RegExp+'),'g').exec(msg)[1]];
}
var result=findToken(“xxx-I你好yyy”、“-I”、“\\w+”;

console.log(result);
使用捕获组并访问其值。请参阅