Javascript:正则表达式,用于将某些字符替换为十六进制代码
Javascript: regex to replace some characters with their hexadecimal code
我找不到一个类似于我想要的示例,即替换:
%与%25
&与 %26
/与 %2F
# 与 %23
"有空间
'' 带空间
作为参考,我将GWT与String.replaceAll一起使用,但我问的是Javascript,因为无论如何它都会被翻译成这样。我知道(组件)URI编码,但这不是我想要的,我只需要这些字符。
后来编辑:我正在寻找一种在一两个正则表达式中执行此操作的方法,现在它是按这样的方式完成的:
splits[i].replaceAll("%", "%25").replaceAll("&", "%26").replaceAll("/","%2F").replaceAll("#", "%23").replaceAll("'"", "").replaceAll("''''", " ");
但这对我来说似乎很丑陋。
(这是针对JavaScript的,这是你问的语言。请注意,它在 Java 中会有很大不同。
在 JavaScript 中,使用带有正则表达式的 replace
并传入函数是微不足道的:
var str = "testing % & / # '" ''";
var result = str.replace(/[%&'/#"'']/g, function(m) {
return (m === '"' || m === '''') ? " " : "%" + m.charCodeAt(0).toString(16);
});
现场示例 | 来源
如果您不介意扫描字符串两次而不是一次,它看起来可以简单一些(尽管还不够,我认为这是值得的):
var str = "testing % & / # '" ''";
var result = str.replace(/["'']/g, " ").replace(/[%&'/#]/g, function(m) {
return "%" + m.charCodeAt(0).toString(16);
});
。因为我们可以分别进行"
和'
替换,并摆脱对匹配内容的检查。现场示例 |源
String.replace(/%/, '%25').replace(/&/, '%26').replace(/'//, '%2F').replace(/#/, '%23').replace(/"/, ' ').replace(/''/, ' ');
相关文章:
- 请求返回 unicode 替换字符
- 如何在字符串中递归替换字符
- 如何转义 JavaScript 正则表达式替换字符
- string.replace(fromCharCode() , '') 不能替换字符
- 使用正则表达式正面/负面前瞻替换字符
- 如何在 Javascript 中映射替换字符,类似于 Perl 中的“tr”函数
- JavaScript 替换 字符
- 替换字符(将 python 代码转换为 JavaScript)
- JavaScript正则表达式来替换字符序列
- Regex用HTML标记替换字符
- 用换行符替换字符
- 替换字符而不替换''在字符串中
- 创建javascript正则表达式以使用白名单替换字符
- 替换字符和单词
- 仅在子字符串中优雅而健壮地替换字符
- 将数组拆分为子数组并替换字符
- 使用 JavaScript 替换和子字符串替换字符
- 使用javascript regex替换字符实体
- 在javascript中使用regex替换字符的奇怪出现
- 我不能用正则表达式和变量替换字符