用于转义逗号和双引号的javascript正则表达式

时间:2011-12-02 09:52:06

标签: javascript regex

我必须逃避两个特殊角色"并且,在具有以下规则的字符串中。

实施例: -

  • Mercu" ry应该转换成" Mercu"" ry"
  • Mercu,应该转换成" Mercu,ry"
  • Mer" cu,应该转换成" Mer"" cu,ry"

规则: -

  • 使用双引号转义含义逗号或双引号。
  • 逗号将通过用双引号括起整个单词来逃脱。
  • 如果找到双引号,则应在其中添加双引号 位置。整个单词也应该包含在double中 引号。

请在javascript中推荐正则表达式。

3 个答案:

答案 0 :(得分:5)

var test = [
    'Mercu"ry', 'Mercu,ry', 'Mer"cu,ry', 'Mercury'
];


for (x in test) {
    var s = test[x];
    if (s.indexOf('"') != -1) {
        s = s.replace(/"/g, '""');
    }

    if (s.match(/"|,/)) {
        s = '"' + s + '"';
    }

    alert(s);
}

测试:http://jsfiddle.net/ZGFV5/

尝试使用Mer""cury运行代码:)

答案 1 :(得分:2)

只需将单词用双引号括起来,并将所有双引号替换为两个:

function escapeWord(word) {
    return '"' + word.replace(/"/g, '""') + '"';
}

答案 2 :(得分:1)

实现此目的的正则表达式为/"/g,因此以下内容适用于您的示例:

var test1 = 'Mercu"ry'
var test2 = 'Mercu,ry'
var test3 = 'Mer"cu,ry'

var regex = /"/g;

var example1 = '"' + test1.replace(regex, '""') + '"';
var example2 = '"' + test2.replace(regex, '""') + '"';
var example3 = '"' + test3.replace(regex, '""') + '"';

alert(example1 + " : " + example2 + " : " + example3);

Example fiddle