Javascript 用于获取第一个唯一事件的正则表达式
我有一个字符串,看起来像:Javascript 用于获取第一个唯一事件的正则表达式,javascript,regex,Javascript,Regex,我有一个字符串,看起来像: "test-file" : "abc.xml","test2-file":"abcd.xml","test3-file":"bcde.xml","test-file" : "def.xml"' 如何创建输出如下数组的正则表达式: {abc.xml, def.xml} or {"test-file" : "abc.xml","test-file" : "def.xml"} 这仅与之前的测试文件配对“:” 我试过: json.match(/"test-file"
"test-file" : "abc.xml","test2-file":"abcd.xml","test3-file":"bcde.xml","test-file" : "def.xml"'
如何创建输出如下数组的正则表达式:
{abc.xml, def.xml} or {"test-file" : "abc.xml","test-file" : "def.xml"}
这仅与之前的测试文件配对<代码>“:”
我试过:
json.match(/"test-file" : "(.*)\.xml"/);
但是我得到了输出:
0:“\'testfile\':\'abc.xml\',\'test2 file\':\'abcd.xml\',\'test3 file\':\'bcde.xml\',\'testfile\':\'def.xml\'” 1:“abc.xml\”、“test2文件\”:“abcd.xml\”、“test3文件\”:“bcde.xml\”、“test文件\”:“def”
将值存储在字符串中并使用split函数 示例:
test_string='"test-file" : "abc.xml","test2-file":"abcd.xml","test3-file":"bcde.xml","test-file" : "def.xml"';
test_string.split(",");
它将按
,
拆分该字符串,并将值存储在数组中。如果您要查找的所有键值对都是
- 在同一节点上或
- 同级
//从对象获取第n个键的函数
Object.prototype.getByIndex=函数(索引){
返回此[Object.keys(this)[index];
};
var json={
“配置”:{
“文件”:[{
“name1”:“test.xml”},
{
“name2”:“test2.xml”
}]
}
};
$.each(json.config.files,函数(i,v){
如果(i!==0)//或任何“好”索引
返回;
//或者,如果它是价值的内容,则识别出一个好的价值。。。
if(v.getByIndex(0.indexOf(“.xml”)!=-1){
控制台日志(v);
返回;
}
});代码>
{abc.xml,def.xml}
这是一个无效的对象或{“test file”:“abc.xml”,“test file”:“def.xml”}
这将只产生一个键值对。@感谢您的更正,但这类问题是否存在可能的正则表达式?@wp78de此json子树可能是具有可变键的更大json的一部分,因此不需要调用“.values”;反复地(因为json结构未知),我考虑将json转换为字符串,并使用regex查找特定的键-值对。甚至有可能吗?为了得到您想要的结果,请使用*
:感谢您的回复,我认为这个解决方案很好,但问题是Json派生自一个模式,该模式在不同的请求中可能会有所不同,而不是针对那些数量可能相当大的模式进行硬编码,我对一个子串很感兴趣,它总是和“测试文件”一样:“abc.xml”。在一种情况下,它可以有一个父级,在另一种情况下,它可以有多个父级,因此json解析并不困难。