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(",");

它将按
拆分该字符串,并将值存储在数组中。

如果您要查找的所有键值对都是

  • 在同一节点上或
  • 同级
直接使用JSON应该没问题

我怀疑正则表达式在处理变量键名称时是否有用。必须有一个标准,允许您区分好钥匙和坏钥匙

如果这个标准是顺序,那么下面是一个示例,用于在不知道键的实际名称的情况下访问这些值。然而,还有很多其他的方法

//从对象获取第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解析并不困难。