javascript:获取特定字符串之间的字符串
javascript:get strings between specific strings
我有一个像detail?ww=hello"....detail?ww=that"
这样的长字符串。我不想得到detail?ww=
和下一个"
之间的所有字符串,我使用.match(/detail'?ww=.+'"/g)
,但我得到的数组包含detail?ww=
和"
,我怎么能只得到没有detail?ww=
和"
的字符串
如果JavaScript理解lookbacking,您可以使用它来匹配前面是detail?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);
正则表达式的一些更改:
+?
——非贪婪量词。
您可以使用一个基本循环:
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"]
[^"]+ : any char except double quotes, one or more times
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
请记住,map
不受IE8及以下版本的支持:http://kangax.github.io/es5-compat-table/#Array.prototype.map.如果你真的不喜欢循环,但需要一个跨浏览器兼容的解决方案,这里有一个替代方案:
var s = 'detail?ww=hello"....detail?ww=that"';
s = s.replace(/.*?detail'?ww=([^"]+")/g, '$1').match(/[^"]+/g) || [];
s; // ["hello", "that"]
相关文章:
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- 使用Javascript获取两个字符串之间的字符串数组
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- javascript:获取特定字符串之间的字符串
- Javascript Regex匹配两个字符串之间的子字符串,但子字符串可以包含DOT(.)
- 在jQuery或JavaScript中获取两个字符串之间的文本
- 在维护标识标签的字符串之间进行重复数据消除
- 在jQuery中,可以在字符串之间添加条件逻辑吗
- 什么's特征检测、特征推断和使用UA字符串之间的区别
- 替换两个字符串之间的多行文本
- 数组值和字符串之间的 JavaScript 比较
- 正则表达式获取两个字符串之间的所有字符串
- 如何使用正则表达式获取两个特定字符串之间的字符串
- 如何使用 javascript 删除字符串之间的标记
- 如何使用nodejs在两个字符串之间选择文本
- 正则表达式在字符串中搜索两个字符串之间的内容
- 查找/获取字符串之间的特定字符串
- Javascript 正则表达式替换 2 个字符串之间的字符串
- 匹配两个字符串之间的字符串
- 在 JavaScript 代码中的注释字符串之间匹配文本