JavaScript:解析奇数字符串以获得必要的信息(RegEx)
JavaScript: Parse through odd string to get necessary information (RegEx)
我试图解析一个格式奇怪的字符串,该字符串存储了我正在构建的音频播放器所需的一些数据。例如:
"a:14:{s:10:"dataformat";s:3:"mp3";s:8:"channels";i:2;s:11:"sample_rate";i:44100;s:7:"bitrate";i:192000;s:11:"channelmode";s:12:"joint stereo";s:12:"bitrate_mode";s:3:"cbr";s:8:"lossless";b:0;s:15:"encoder_options";s:6:"CBR192";s:17:"compression_ratio";d:0.1360544217687074952660708504481590352952480316162109375;s:10:"fileformat";s:3:"mp3";s:8:"filesize";i:7249920;s:9:"mime_type";s:10:"audio/mpeg";s:6:"length";i:302;s:16:"length_formatted";s:4:"5:02";}"
它超级难看。对于我接口的每首歌,都会包括上面提供的信息类型。基本上,我想要的只是"length_formated"的值,即"5:02"。我假设我需要使用正则表达式来实现这一点,但由于我没有任何经验,我不知道从哪里开始。
试试这个代码:
string = `"a:14:{s:10:"dataformat";s:3:"mp3";s:8:"channels";i:2;s:11:"sample_rate";i:44100;s:7:"bitrate";i:192000;s:11:"channelmode";s:12:"joint stereo";s:12:"bitrate_mode";s:3:"cbr";s:8:"lossless";b:0;s:15:"encoder_options";s:6:"CBR192";s:17:"compression_ratio";d:0.1360544217687074952660708504481590352952480316162109375;s:10:"fileformat";s:3:"mp3";s:8:"filesize";i:7249920;s:9:"mime_type";s:10:"audio/mpeg";s:6:"length";i:302;s:16:"length_formatted";s:4:"5:02";}"`
document.body.innerHTML = string.match(/length_formatted.*?('d+:'d+)/)[1]
解释正则表达式:
/length_formatted.*?('d+:'d+)/
length_formatted // match the literal text
.*? // till the next ocurrence of
( // group in [1]
'd+ // at least one digit
: // literal ':'
'd+ // at least one digit
) // end of captouring group
希望能有所帮助。
var s = '"a:14:{s:10:"dataformat";s:3:"mp3";s:8:"channels";i:2;s:11:"sample_rate";i:44100;s:7:"bitrate";i:192000;s:11:"channelmode";s:12:"joint stereo";s:12:"bitrate_mode";s:3:"cbr";s:8:"lossless";b:0;s:15:"encoder_options";s:6:"CBR192";s:17:"compression_ratio";d:0.1360544217687074952660708504481590352952480316162109375;s:10:"fileformat";s:3:"mp3";s:8:"filesize";i:7249920;s:9:"mime_type";s:10:"audio/mpeg";s:6:"length";i:302;s:16:"length_formatted";s:4:"5:02";}"';
var x = s.split('length_formatted";s:')[1].split('"')[1];
alert(x);
找到这个字符串的'length_formatted";s:'
,现在将其拆分为最后一部分,然后用"
将其拆分,从结果中取出中间部分!
您可以这样做:
var lengthFormatted = string.match(/length_formatted"[^"]*"([^"]*)"/).pop(); // => 5:02
这假设:
"length_formatted";s:4:"5:02"
也可能是这样的:
"length_formatted";all_kinds_of_random_stuff_h3r3;;;;"5:02"
这很有效。这假设s:14将始终是长度。我在;
上拆分垃圾,然后查看是否与s:4
匹配并记录索引。然后提取文本。
$(document).ready(function () {
//var cow = 'Check out this image <a href="http://link.com"><img src="http://image.com" style="border:2px solid #ccc;" /></a> and one with a width <a href="http://link.com"><img src="http://image.com" width="700" align="left" /></a>';
var yourString = 'a:14:{s:10:"dataformat";s:3:"mp3";s:8:"channels";i:2;s:11:"sample_rate";i:44100;s:7:"bitrate";i:192000;s:11:"channelmode";s:12:"joint stereo";s:12:"bitrate_mode";s:3:"cbr";s:8:"lossless";b:0;s:15:"encoder_options";s:6:"CBR192";s:17:"compression_ratio";d:0.1360544217687074952660708504481590352952480316162109375;s:10:"fileformat";s:3:"mp3";s:8:"filesize";i:7249920;s:9:"mime_type";s:10:"audio/mpeg";s:6:"length";i:302;s:16:"length_formatted";s:4:"5:02";}"';
var eachPart = yourString.split(";");
var re = /s:4/i;
var count = 0;
for(var i = 0; i < eachPart.length; i++) {
console.log(eachPart[i]);
var found = eachPart[i].match(re);
if(found)
count = i;
}
re = /".*?"/;
var yourLength = extractText(eachPart[count]);
console.log(yourLength);
});
function extractText( str ){
var ret = "";
if ( /"/.test( str ) ){
ret = str.match( /"(.*?)"/ )[1];
} else {
ret = str;
}
return ret;
}
相关文章:
- 访问布局信息是否也会导致浏览器重排
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- Regex代码只允许一个空格
- Regex匹配除“”之外的所有字符;.js”;
- RegExp:匹配Javascript中除regex值之外的所有内容
- 定义完全独立的样式信息
- 使用html2canvas获取基本信息
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 从信息框调用弹出图像库
- Javascript RegEx validator
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 如何在不传递此信息的情况下查找被调用的元素
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 制作一个regex来验证只有一个数字的字符串
- RegEx JavaScript:数字后的符号提取
- PHP和Javascript之间的Regex差异
- 链接和youtube的Javascript和regex
- JavaScript:解析奇数字符串以获得必要的信息(RegEx)
- regex表达式不适用于验证信用卡到期信息
- Regex以捕获TypeScript中的键入信息