javascript 凯撒密码算法

标签 javascript regex string encryption

有没有办法实现这个函数?因为我发现它很难理解,特别是带有 char 参数的函数,我不知道在哪里或如何使用它。

function trans(msg, rot) {
    //Reemplaza cada letra encontrada de la expresion [a-z], por el caracter codificado de la funcion
    return msg.replace(/([a-z])/ig,
        function(char) {
            var codASCII = char.charCodeAt(0);
            return String.fromCharCode( codASCII >= 97 ? (codASCII + rot + 26 - 97) % 26 + 97 : (codASCII + rot + 26 - 65) % 26 + 65 );
        });
}

提前谢谢

最佳答案

让我们看看String.replace的函数定义:

str.replace(regexp|substr, newSubStr|function [, flags]);

在 JavaScript 中,我们可以将替换函数传递给 String.replace 函数。描述了如何填充函数的参数 in this section of MDN article .

基本上:

  • 第一个参数是与整个表达式匹配的字符串(相当于替换字符串中的 $&)
  • 后跟捕获组的内容(相当于 $n,其中 n 是正数)。参数的数量与捕获组的数量一样多。
  • 后跟主要匹配的偏移量
  • 最后一个参数是输入字符串。

因此,/([a-z])/ig 匹配的任何内容都将作为第一个参数提供给替换函数(在本例中为 char)。匹配的字符将被处理并作为替换返回。

在您的代码中,/([a-z])/ig 可以简化为 /[a-z]/ig,因为替换函数仅引用主匹配.

关于javascript 凯撒密码算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26584958/

相关文章:

javascript - 在不同情况下使用 Passport.js 更改和保存重定向

java - 匹配右大括号时 Android 中的正则表达式模式错误

php - 从包含 PHP 中括号的字符串中提取文本

regex - 使用 grepl 从模式列表中查找匹配模式

javascript - 如何在 map 框 map 上生成文本框?

javascript - 注入(inject) $uibModal 时出错

javascript - 如何在 mousedown 事件后找到标签旁边的输入的 id?

regex - 使用 sed 命令替换一行中的字符串

javascript - 正则表达式仅抓取日期

c# - 如何从 C# 中的字符串中获取最后四个字符?