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方法。您可以简单地迭代匹配数组并构建您感兴趣的新数组。我只是觉得它比直接迭代更清晰、更容易理解。在我尝试迭代数组之前,我认为它很乏味,我只是想要一个更清晰的方法