Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式:删除以下日期模式末尾的逗号_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式:删除以下日期模式末尾的逗号

Javascript 正则表达式:删除以下日期模式末尾的逗号,javascript,regex,Javascript,Regex,我得到了API的以下JSON: { "things": [ { "id": 100, "bla": "blablablabla", "summary": "blablablabla", "date": "11/12/2016", }, { "id": 101, "bla": "blablablabla", "summary": "blablablabla", "date":

我得到了API的以下JSON:

{
  "things": [
    {
      "id": 100,
      "bla": "blablablabla",
      "summary": "blablablabla",
      "date": "11/12/2016",
    },
    {
      "id": 101,
      "bla": "blablablabla",
      "summary": "blablablabla",
      "date": "02/05/2017",
    },
    {
      "id": 102,
      "bla": "blablablabla",
      "summary": "blablablabla",
      "date": "03/03/2017",
    },
    {
      "id": 103,
      "bla": "blablablabla",
      "summary": "blablablabla",
      "date": "12/04/2017",
    }
  ]
}

正如您所看到的,这个json中有一个输入错误,因为日期后的逗号是一个错误,有办法在每个日期后删除这个逗号吗?

您可以使用以下正则表达式:date:[0-9\/]*

我们搜索日期:,然后是从0-9或斜杠的任意数字的无限量,这将一直带到最终的引号。在模式中,我们包含此引号。从第一个引号到最后一个引号,都包含在括号中,因此这是一个组匹配,我们将其称为组1,然后验证它是否以逗号结尾,。一旦我们验证了这一点,我们将用组1替换整个选择,以便从字符串中删除逗号


您可以看到更详细的逐步演练。

您可以使用以下正则表达式:date:[0-9\/]*

我们搜索日期:,然后是从0-9或斜杠的任意数字的无限量,这将一直带到最终的引号。在模式中,我们包含此引号。从第一个引号到最后一个引号,都包含在括号中,因此这是一个组匹配,我们将其称为组1,然后验证它是否以逗号结尾,。一旦我们验证了这一点,我们将用组1替换整个选择,以便从字符串中删除逗号


您可以看到更详细的逐步演练。

将逗号字符替换为换行符,空格字符替换为}


替换逗号字符后跟换行符,空格字符后跟}


替换为$1是您使用的格式还是没有空格?您有权在服务器上更改它吗?没有,我没有访问服务器的权限。顺便说一句,您没有符合要求的字符串。也许您可以查看一下api,或者要求供应商提供一个标准字符串。替换为$1是您使用的格式还是没有空格?您有权在服务器上更改它吗?没有,我没有访问服务器的权限。顺便说一句,您没有符合要求的字符串。也许您可以查看api或要求供应商提供标准字符串。这是更好的答案,因为问题不在于日期对后出现逗号,而在于右大括号前出现逗号。@JonathanM我非常同意。我的大脑一开始并没有处理这种区别。\n已经是\s的一部分,所以可以简化为/,?=\s*}/g这是更好的答案,因为问题不在于日期对后出现逗号,而在于右大括号前出现逗号。@JonathanM我非常同意。我的大脑一开始并没有处理这种区别。\n已经是\s的一部分,所以可以简化为/,?=\s*}/g
preg_replace("/("date": "[0-9\/]*"),/", "$1", $json);
str.replace(/,(?=[\n\s]+})/g, "")