Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Parsing - Fatal编程技术网

正则表达式和Javascript从字符串中删除数字

正则表达式和Javascript从字符串中删除数字,javascript,regex,parsing,Javascript,Regex,Parsing,我有一个字符串: str = 'View:{ Name:"View1", Image:{ BackgroundImage:"Image.gif", Position: [0, 0], Width: 320, Height: 480 }, Button:{

我有一个字符串:

 str =    'View:{
            Name:"View1",
            Image:{
                BackgroundImage:"Image.gif",
                Position: [0, 0],
                Width: 320,
                Height: 480
            },

            Button:{
                BackgroundImage:"Button.gif",
                Transition:"View2",
                Position: [49, 80],
                Width: 216,
                Height: 71
            },

            Button:{
                BackgroundImage:"Button2.gif",
                Position: [65, 217],
                Width: 188,
                Height: 134
            },'
我使用这个正则表达式将“#”添加到末尾有“:{”的元素中

var i = 0;
str = str.replace(/([^:]+):{/g, function(m, p1) { return p1 + "_" + (++i).toString() + ":{"; });
输出是

str =    'View_1:{
        Name:"View1",
        Image_2:{
            BackgroundImage:"Image.gif",
            Position: [0, 0],
            Width: 320,
            Height: 480
        },

        Button_3:{
            BackgroundImage:"Button.gif",
            Transition:"View2",
            Position: [49, 80],
            Width: 216,
            Height: 71
        },

        Button_4:{
            BackgroundImage:"Button2.gif",
            Position: [65, 217],
            Width: 188,
            Height: 134
        },'
然后我用它做了很多事情,现在我需要从中去掉“#”这个词。我该如何去掉这些“#”

这不是必需的,但我遇到的另一个问题是,第一个正则表达式从0开始递增,并给每个元素下一个递增的数字。我正在尝试使它使每个元素在其类型上递增。 像这样:

str =    'View_1:{
        Name:"View1",
        Image_1:{
            BackgroundImage:"Image.gif",
            Position: [0, 0],
            Width: 320,
            Height: 480
        },

        Button_1:{
            BackgroundImage:"Button.gif",
            Transition:"View2",
            Position: [49, 80],
            Width: 216,
            Height: 71
        },

        Button_2:{
            BackgroundImage:"Button2.gif",
            Position: [65, 217],
            Width: 188,
            Height: 134
        },'

关于我这里做错了什么,有什么意见吗?

对于第一个问题,只需将
\d+:{
替换为
:{

第二,每种类型都需要一个单独的计数器。请尝试以下方法:

var i = {};
str = str.replace(/([^:]+):{/g, function(m, p1) {
    i[p1] = (i[p1] || 0)+1;
    return p1 + "_" + i[p1].toString() + ":{";
});

对于第一个问题,只需将
\d+:{
替换为
:{

第二,每种类型都需要一个单独的计数器。请尝试以下方法:

var i = {};
str = str.replace(/([^:]+):{/g, function(m, p1) {
    i[p1] = (i[p1] || 0)+1;
    return p1 + "_" + i[p1].toString() + ":{";
});

你正在得到一个语法错误,不是吗?你为什么不直接修复这个无效的JSON对象:)似乎应该构建一个对象数组。为什么你需要数字独立递增?你担心数字用完了吗?:)信不信由你,这个字符串从来就不是JSON对象。它是一个ins说明脚本,因此我无法修改传入字符串。我必须将其解析为一个对象。根据web表单对字符串进行一些更改,并将其传递回-减去数字。有意义吗?@Barmar:)。我可能会得到包含30或40个按钮以及大量图像和层的字符串。需要某种组织。您遇到语法错误是吗?你为什么不修复构建这个无效JSON对象的方法:)似乎它应该构建一个对象数组。为什么你需要数字独立递增?你担心数字用完了吗?:)信不信由你,这个字符串从来就不是JSON对象。它是一个指令脚本,所以我无法修改fy传入字符串。我必须将其解析为一个对象。根据web表单对字符串进行一些更改并将其传递回-减去数字。有意义吗?@Barmar:)。我可能会得到包含30或40个按钮以及大量图像和层的字符串。需要某种组织。我正在测试第一个。但第二个也一样对它们都用“_1”号。似乎不是递增的。这是一个演示,上面显示的是作为对象的输出,下面显示的是字符串抱歉,如果我有误解,请“用“:{”替换“\d+:{”。我在我提供的代码中没有看到“\d+:{”。好的,经过一些调试,我发现您需要使用
/(\S+):{/g
在我给你的正则表达式中,否则它也匹配上一行的内容,这就是为什么它在所有方面都给你
1
。至于
\ud+:{
,这将匹配添加的数字,如果替换为空字符串,则会将其删除。谢谢Kolink。第一个效果很好。我的问题是第二个。你能为我提供整个.replace()吗。我尝试过将其切换掉,但它不起作用。
.replace(/\d+:{/g,:{'))
我现在正在测试第一个。但是第二个只是将“\u 1”分配给所有的对象。似乎没有增加。下面是一个演示,上面显示的是作为对象的输出,下面显示的是字符串抱歉,如果我有误解,请“将“\ud+:{”替换为“:{”。我没有看到“\d+:{'在我提供的代码中。好的,经过一些调试后,我发现您需要在我提供给您的正则表达式中使用
/(\S+):{/g
,否则它也匹配上一行的内容,这就是为什么它在所有方面都给您
1
。至于
\ud+:{
,这将匹配添加的数字,如果替换为空字符串,则会将其删除。谢谢Kolink。第一个效果很好。我的问题是第二个。你能为我提供完整的.replace()吗。我尝试过将其关闭,但它不起作用。
.replace(/\d+:{/g',:{')