正则表达式围绕某些文本要求添加引号

时间:2012-12-28 23:01:35

标签: java javascript regex string

我有这个字符串,我试图在符合某些要求的文本周围添加引号。规则是在“Text:”之后和“;”之前的单词中添加“”。要么 '}' 这是字符串:EDIT(注意“”。这不是JSON对象。它只是一个字符串):

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

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

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

我无法让它工作

3 个答案:

答案 0 :(得分:3)

试试这个:

str.replace(/Text:[\s]*([^;}\r\n]+)/ig, 'Text:  "$1"');

虽然我怀疑str是你问题中的字符串。它看起来更像(无效的)JSON对象而不是字符串。

答案 1 :(得分:0)

浏览器将无法解释此文字javascript对象上的任何内容。 语法错误。

首先应该在JS对象的每个属性上丢失分号,然后添加一个简单的昏迷。

看起来应该是这样的:

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

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

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

分号仅在对象的末尾。 这些属性不像常规变量。

答案 2 :(得分:0)

您可以使用

var fixed = s.replace(/(Text:\s*)(.+?)(\s*;|}|$)/gm,'$1"$2"$3');

演示 http://jsfiddle.net/gaby/2etcS/1/