在javascript中使用正则表达式替换字符串中的多个值

在javascript中使用正则表达式替换字符串中的多个值,javascript,html,regex,Javascript,Html,Regex,我试图一次替换一个变量中的多个字符串值,并将其从表单数据传递到一个新的变量中 我的最终结果是制作一个非常简单(粗糙)的加密\解密程序。 这就是我目前所拥有的。我似乎找不到从这里到哪里去的任何东西 function testResults (form) { var TestVar = form.inputbox.value; var NewVar = TestVar.replace(/a/g, "b").replace(/b/g, "c"); alert ("Replace

我试图一次替换一个变量中的多个字符串值,并将其从表单数据传递到一个新的变量中

我的最终结果是制作一个非常简单(粗糙)的加密\解密程序。 这就是我目前所拥有的。我似乎找不到从这里到哪里去的任何东西

function testResults (form) {
    var TestVar = form.inputbox.value;
    var NewVar = TestVar.replace(/a/g, "b").replace(/b/g, "c");
    alert ("Replaced text: " + NewVar);
}

如果我理解正确,您希望用“b”替换每个“a”,用“c”替换每个“b”,等等,但是如果您直接这样做(如您的示例中所示),您将得到从“a”生成的所有“b”,最后用“c”替换,这不是您想要的

也许你可以分两个阶段工作:

A.用特殊字符串替换每个字符

B.用加密替换每个特殊字符串

例如,您的示例如下所示:

var TempVar = TestVar.replace(/a/g, "{{{a}}}").replace(/b/g, "{{{b}}}");
var NewVar  = TempVar.replace(/{{{a}}}/g, "b").replace(/{{{b}}}/g, "c");

如果我理解正确,您希望用“b”替换每个“a”,用“c”替换每个“b”,等等,但是如果您直接这样做(如您的示例中所示),您将得到从“a”生成的所有“b”,最后用“c”替换,这不是您想要的

也许你可以分两个阶段工作:

A.用特殊字符串替换每个字符

B.用加密替换每个特殊字符串

例如,您的示例如下所示:

var TempVar = TestVar.replace(/a/g, "{{{a}}}").replace(/b/g, "{{{b}}}");
var NewVar  = TempVar.replace(/{{{a}}}/g, "b").replace(/{{{b}}}/g, "c");

如果您试图将符号的所有ascii码移位一,则您的尝试不是很好。看看这个代码

关于你的代码,它看起来像

function testResults (form) {
    var TestVar = form.inputbox.value;
    var NewVar = TestVar.replace(/(\w)/g,
              function(match){ 
                  return String.fromCharCode(match.charCodeAt(0)+1);
               }); 
    alert ("Replaced text: " + NewVar);
}

如果您试图将符号的所有ascii码移位一,则您的尝试不是很好。看看这个代码

关于你的代码,它看起来像

function testResults (form) {
    var TestVar = form.inputbox.value;
    var NewVar = TestVar.replace(/(\w)/g,
              function(match){ 
                  return String.fromCharCode(match.charCodeAt(0)+1);
               }); 
    alert ("Replaced text: " + NewVar);
}

我不认为正则表达式是模糊算法的正确选择。您应该使用自己的代码算法操作字符串,而不是使用正则表达式。下面是一种简单的方法,可以将字符串中的每个字符增加一个值,就像您尝试使用正则表达式一样:

function testResults (form) {
    var input = form.inputbox.value;
    var output = [];
    for (var i = 0; i < input.length; i++) {
        output[i] = String.fromCharCode(input.charCodeAt(i) + 1);
    }
    output = output.join("");
    alert ("Replaced text: " + output);
}
函数测试结果(表格){
变量输入=form.inputbox.value;
var输出=[];
对于(变量i=0;i
您可以在此处看到一个示例:


仅供参考,请不要称此为加密,因为它不是加密。这是模糊(以非安全方式模糊原始值)。

我认为正则表达式不是模糊算法的正确方法。您应该使用自己的代码算法操作字符串,而不是使用正则表达式。下面是一种简单的方法,可以将字符串中的每个字符增加一个值,就像您尝试使用正则表达式一样:

function testResults (form) {
    var input = form.inputbox.value;
    var output = [];
    for (var i = 0; i < input.length; i++) {
        output[i] = String.fromCharCode(input.charCodeAt(i) + 1);
    }
    output = output.join("");
    alert ("Replaced text: " + output);
}
函数测试结果(表格){
变量输入=form.inputbox.value;
var输出=[];
对于(变量i=0;i
您可以在此处看到一个示例:


仅供参考,请不要称此为加密,因为它不是加密。这是隐藏(以非安全方式隐藏原始值)。

如果要移动字母,不应使用这种方式替换

我建议你这样做:

函数移位(str,num){
var res=“”;
对于(变量i=0;i
如果要移动字母,不应使用“替换”这种方式

我建议你这样做:

函数移位(str,num){
var res=“”;
对于(变量i=0;i
您想做什么?正则表达式在您的代码中是正确的。您想做什么?正则表达式在代码中是正确的。