以下是小提琴中呈现的情况: http://jsfiddle.net/am4ph9ut
function encodeAllCharacters(){
var result = "%60~!%40%23%24%25%26*()_%2B-%3D%7B%7D%7C%5B%5D%3B%3A'%22%2F.%2C%3C%3E%3F%60";
result = result.replace(/[!'()*-_.~]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
return result;
}
这是此页面中解释的fixedEncodeURIComponent
方法的简化版本:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
我不确定为什么在执行%3
后每个字符后都会添加regexp
。
答案 0 :(得分:0)
你的正则表达式在字符类中使用-
(即方括号),这意味着左边的那个字符与-
(包括)右边的字符之间的所有字符,例如。 [c-f]
将匹配c,d,e,f。
要匹配字符-
本身,请使用反斜杠来转义它:
result = result.replace(/[!'()*\-_.~]/g, function(c) {