Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:regex将某些字符替换为十六进制代码_Javascript_Regex_Url Encoding - Fatal编程技术网

Javascript:regex将某些字符替换为十六进制代码

Javascript:regex将某些字符替换为十六进制代码,javascript,regex,url-encoding,Javascript,Regex,Url Encoding,我还没有找到一个与我想要的类似的示例,即替换: %有25% &与%26 /使用%2F 与%23 有空间 \有空间 作为参考,我将GWT与String.replaceAll一起使用,但我要问的是Javascript,因为这就是它被翻译成的内容。我知道组件URI编码,但这不是我想要的,我只需要这些字符 稍后编辑:我正在寻找一种在一个或两个正则表达式中完成的方法,现在是这样完成的: 拆分[i].replaceAll%,%25.replaceAll&,%26.replaceAll/,%2F.replac

我还没有找到一个与我想要的类似的示例,即替换:

%有25%

&与%26

/使用%2F

与%23

有空间

\有空间

作为参考,我将GWT与String.replaceAll一起使用,但我要问的是Javascript,因为这就是它被翻译成的内容。我知道组件URI编码,但这不是我想要的,我只需要这些字符

稍后编辑:我正在寻找一种在一个或两个正则表达式中完成的方法,现在是这样完成的:

拆分[i].replaceAll%,%25.replaceAll&,%26.replaceAll/,%2F.replaceAll,%23.replaceAll\,.replaceAll\\\


但这在我看来很难看。

这是针对JavaScript的,这是您询问的语言。注意,它在Java中会有很大的不同

String.replace(/%/, '%25').replace(/&/, '%26').replace(/\//, '%2F').replace(/#/, '%23').replace(/"/, ' ').replace(/\\/, ' ');
在JavaScript中,与正则表达式一起使用非常简单,并且:

|

如果您不介意将字符串扫描两次而不是一次,那么它看起来可能会更简单一些,尽管还不够,我认为它值得:

var str = "testing % & / # \" \\";
var result = str.replace(/["\\]/g, " ").replace(/[%&\/#]/g, function(m) {
    return "%" + m.charCodeAt(0).toString(16);
});

…因为我们可以分别进行and \替换,并且不必检查我们匹配的内容。|

这是针对JavaScript的,这是您询问的语言。注意,它在Java中会有很大的不同

在JavaScript中,与正则表达式一起使用非常简单,并且:

|

如果您不介意将字符串扫描两次而不是一次,那么它看起来可能会更简单一些,尽管还不够,我认为它值得:

var str = "testing % & / # \" \\";
var result = str.replace(/["\\]/g, " ").replace(/[%&\/#]/g, function(m) {
    return "%" + m.charCodeAt(0).toString(16);
});

…因为我们可以分别进行and \替换,并且不必检查我们匹配的内容。|

这正是我现在所做的,但我在寻找是否有一种方法可以通过一个或两个步骤来完成。没有String.replace函数,replace是从String.prototype继承的字符串实例上的函数,而不是字符串构造函数函数。2.这会重复扫描字符串。3.这将只替换每个字符的第一次出现,而不是所有字符。这正是我现在所做的,但我正在寻找是否有一种方法可以在一个或两个步骤中完成。上面的几个问题:1。没有String.replace函数,replace是从String.prototype继承的字符串实例上的函数,而不是字符串构造函数函数。2.这会重复扫描字符串。3.这将只替换每个字符的第一次出现,而不是所有字符;尽管这在我的应用程序中并不可行,但它很优雅地解决了这个问题。我想看看是否有一种方法可以用带有capture->replace的泛型/标准正则表达式来实现。@brainwash:我想看看是否有一种方法可以用带有capture->replace的泛型/标准正则表达式来实现。。。不是用JavaScript;您可以使用捕获组和占位符移动内容,例如testing.replace/t./g,$2$1=>etsitng,但要进行转换,必须使用函数。我不熟悉任何一个正则表达式引擎,它可以让你将字符转换为字符代码,而不需要调用你编写的函数,但我对正则表达式的大部分体验都是用JavaScript编写的,当然,是单独编写的;尽管这在我的应用程序中并不可行,但它很优雅地解决了这个问题。我想看看是否有一种方法可以用带有capture->replace的泛型/标准正则表达式来实现。@brainwash:我想看看是否有一种方法可以用带有capture->replace的泛型/标准正则表达式来实现。。。不是用JavaScript;您可以使用捕获组和占位符移动内容,例如testing.replace/t./g,$2$1=>etsitng,但要进行转换,必须使用函数。我不熟悉任何正则表达式引擎,它可以让您将字符转换为字符代码,而无需调用您编写的函数,但我对正则表达式的大部分体验都是使用JavaScript,当然,也可以单独使用它们。