javascript - 如何在 JavaScript 中制作密码编码器?

标签 javascript regex

我查看了其他页面,看看是否有办法用另一个字符替换所有出现的字符,到目前为止,我看到了在替换方法中使用正则表达式的建议,以及创建一个hashmap 来保存所有要替换的值。经过一些手指魔术后,我想到了这个:

function encodeMe(input) {
    var chars = {
        "f" : "o",
        "o" : "b",
        "a" : "r"
    }
    var encodedMessage = input.replace(/[^ -~]/g, function(chr) {
        return (chr in chars) ? chars[chr] : "&#"+chr.charCodeAt(0)+";";
    });
    return encodedMessage;
}

问题是,如果我提交“foo bar”,它会返回“foo bar”而不是“obb brr”。
我显然做错了什么,但我不知道是什么。有人可以帮我吗?

最佳答案

将字符组中的-移动到末尾:[^ ~-]。否则你正在创建一个 range,表达式的意思是 “不匹配 (空格)和 ~ 之间的任何字符",其中也包括字母。

http://www.asciitable.com/

关于javascript - 如何在 JavaScript 中制作密码编码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358724/

相关文章:

javascript - 使用 require.js 加载 Angular ui-bootstrap 失败,除非我重命名 ui.bootstrap?

javascript - 我可以使用 rx.js 观察数组的添加吗?

regex - Prometheus/从 __meta_gce_tags 创建标签列表

java - 从自然语言创建正则表达式

javascript - 正则表达式 - 如何匹配两个或四个相同的字母而不是三个

Python 正则表达式接受除 <>%;$ 之外的所有字符

JavaScript 正则表达式使用可能的通配符子域说明符检查 URL

javascript - 本地node.js服务器和python简单http服务器有什么区别

javascript - Meteor.js 的模板 onload 事件

javascript - 如何选择多个元素的 siblings()?