在javascript中使用正则表达式替换字符串中的多个值
using regular expressions to replace multiple values in a string in javascript
我试图同时替换一个变量中的多个字符串值,并将其传递到表单数据中的新值中。
我的最终结果是制作一个非常简单(粗糙)的加密/解密程序。这就是我到目前为止所拥有的。我似乎找不到任何关于从这里去哪里的东西。
function testResults (form) {
var TestVar = form.inputbox.value;
var NewVar = TestVar.replace(/a/g, "b").replace(/b/g, "c");
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);
}
您可以在此处看到一个示例:http://jsfiddle.net/jfriend00/LYnAV/.
仅供参考,请不要称此为加密,因为它不是加密。这是模糊(以非安全的方式模糊原始价值)。
如果我理解正确,您希望将每个"a"都替换为"b",将每个"b"替换为"c",等等,但如果您直接执行此操作(如您的示例中所示),您将从"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代码移动一个,那么您的尝试不是很好。看看这个代码http://jsfiddle.net/AHgZq/
$('#in').keyup(function(){
var val = $(this).val(), newval = '';
for(var i=0; i<val.length; i++)
{
newval += String.fromCharCode(val.charCodeAt(i)+1);
}
$('#out').val(newval);
});
在id为"in"的输入中输入的任何字母上,它都会获取整个字符串,并获取其中的每个字母。使用函数charCodeAt
获取其ASCII代码,将其增加一,并在fromCharCode
函数的帮助下转换回ASCII符号。之后,它将id为"out"的input的值设置为移位后的字符串。示例代码使用jQuery快速访问元素,但一般不需要它。
或者可以使用regexphttp://jsfiddle.net/8sMvg/1/
$('#in').keyup(function(){
var val = $(this).val(), newval = '';
newval = val.replace(/('w)/g,
function(match,group){
return String.fromCharCode(match.charCodeAt(0)+1);
});
$('#out').val(newval);
});
关于你的代码,它看起来像
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);
}
如果你想转换字母,你不应该用这种方式替换。
我建议你用this
的方式:
function shift(str, num) {
var res = "";
for (var i = 0; i < str.length; i++) {
str = str.toUpperCase();
var ch = str.charAt(i);
if ("ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(ch) != -1) {
var code = str.charCodeAt(i);
var shiftedCode = 'A'.charCodeAt() + (code - 'A'.charCodeAt() + num) % ('Z'.charCodeAt() - 'A'.charCodeAt() + 1);
res += String.fromCharCode(shiftedCode);
} else {
res += ch;
}
}
return res;
}
function encStr(str) {
return shift(str, 1);
}
function decStr(str) {
return shift(str, 25);
}
alert(decStr(encStr("this string is encrypted and decrypted correctly!")));
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 从字符串中提取年份的Javascript正则表达式
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- 如何将正则表达式包含到字符串数组中
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 使用正则表达式反转字符串中的元音
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 删除两个字符串正则表达式之间的所有内容
- Javascript,字符串正则表达式匹配
- 字符串正则表达式模式.replace(/{0}/, “$0.00”) 不起作用
- Javascript:字符串正则表达式
- 如何在JavaScript中子字符串正则表达式
- 匹配大写或小写字符串正则表达式
- 逗号和空格分隔的数字和连字符分隔的字符串正则表达式
- 解析CGI查询字符串正则表达式
- 分析已知键的字符串正则表达式,但保留分隔符
- 在一组字符串中重新排列一个字符串 - 正则表达式
- 从字符串正则表达式中提取多个值