Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Match - Fatal编程技术网

javascript:获取特定字符串之间的字符串

javascript:获取特定字符串之间的字符串,javascript,regex,match,Javascript,Regex,Match,我有一个像这样的长字符串detail?ww=hello“…detail?ww=that”。我不想得到detail?ww=和下一个“”之间的所有字符串,我使用.match(/detail\?ww=.+\”/g),但是我得到的数组包含detail?ww=和“,我如何才能只获取没有细节的字符串?ww=和”如果JavaScript理解lookbehind,您可以使用它来匹配前面有细节的字符串?ww=,后面是;。事实并非如此,因此需要进行更多的处理: var str = 'detail?ww=hello"

我有一个像这样的长字符串
detail?ww=hello“…detail?ww=that”
。我不想得到
detail?ww=
和下一个
”之间的所有字符串,我使用
.match(/detail\?ww=.+\”/g)
,但是我得到的数组包含
detail?ww=
,我如何才能只获取没有
细节的字符串?ww=
如果JavaScript理解lookbehind,您可以使用它来匹配前面有
细节的字符串?ww=
,后面是
。事实并非如此,因此需要进行更多的处理:

var str = 'detail?ww=hello"....detail?ww=that"';

var regexG = /detail\?ww\=(.+?)\"/g;
var regex  = /detail\?ww\=(.+?)\"/;
var matches = str.match(regexG).map(function(item){ return item.match(regex)[1] });

console.log(matches); 
对regexp的一些更改:


+?
-非贪婪量词。

您可以使用基本循环来实现这一点:

var result = [],
    s = 'detail?ww=hello"....detail?ww=that"',
    r = /detail\?ww=([^"]+)/g,
    m;
while (m = r.exec(s)) {
    result.push(m[1]);
}
result; // ["hello", "that"]
[^”]+:除双引号外的任何字符,一次或多次


请记住,
map
不受IE8及以下版本的支持:。如果您确实不喜欢循环,但需要跨浏览器兼容的解决方案,这里有一个替代方案:

var s = 'detail?ww=hello"....detail?ww=that"';
s = s.replace(/.*?detail\?ww=([^"]+")/g, '$1').match(/[^"]+/g) || [];
s; // ["hello", "that"]

你能有一个像
detail这样的字符串吗?ww=hello=1?更新:。哦,谢谢,我知道了。我不知道javascript数组的方法
map
,现在我知道了。非常感谢。你真的不需要map方法。您可以简单地迭代匹配数组并构建您感兴趣的新数组。我只是觉得它比直接迭代更清晰、更容易理解。在我尝试迭代数组之前,我认为它很乏味,我只是想要一个更清晰的方法