在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
您想做什么?正则表达式在您的代码中是正确的。您想做什么?正则表达式在代码中是正确的。