Javascript - 正则表达式。我需要在构建ID时替换所有无效字符

时间:2013-12-10 17:38:54

标签: javascript regex

当我在某些表行/单元格上创建唯一ID时,我使用从JSON对象返回的数据来创建它们。这适用于标准字符,但是,无效的DOM字符不起作用。

我希望能够创建一个函数,将变量传递给然后返回一个已转换ID并将反斜杠添加到所有相关字符的值。

到目前为止,我有:

    var wsTmpS = fncIdConversion(trim(pData.SUPP_SG_SCOPE_CODE));

在我的库函数中(有许多不同的尝试注释掉了......):

//---------------------------------------------------------
function fncIdConversion(pId ) {
//---------------------------------------------------------
//      return "#" + pId.replace( /(:|\.|\[|\])/g, "\\$1" );
//      pId = pId.toString();
//      return pId.replace( /(:|\.|\[|\])/g, "\\$1" );
//      return pId.replace(/([.*+?^$|(){}\[\]])/mg, "\\$1");
//      pId = pId.replace(/([.*+?^$|(){}\[\]])/mg, "\\$1");

//      pId = pId.replace(/(:|\.|\(\)\[|\])/g, "\\$1");

//      pId = pId.replace(/(\(\))/mg, "\\$1");

//      pId =  pId.replace(/[\(\)\[\]{}'"]/mg, "\\$1");
    var pattern = /[\(\)\[\]{}'"]/mg;
    pId = pId.replace(pattern, "||$1");
    return pId;
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

为了替换$1(定义捕获组产生的变量),您需要使用括号() 定义该捕获组:

function fncIdConversion(pId ) {
    var pattern = /([\(\)\[\]{}'"])/mg;
    pId = pId.replace(pattern, "\\$1");
    return pId;
}

请参阅此处的工作示例:http://regex101.com/r/zI1qG5