Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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正则表达式以捕获';%20';还是空白_Javascript_Regex - Fatal编程技术网

Javascript正则表达式以捕获';%20';还是空白

Javascript正则表达式以捕获';%20';还是空白,javascript,regex,Javascript,Regex,我对正则表达式没法理解。要打开此字符串: var str = "Hello my%20name is%20Jascination" 进入 我试过: var str2 = str.replace(/[20%]/w/s/g, '&') var str2 = str.replace(/[20%/w/s]/g, '&') 但是这些不起作用。使用Regex如何捕获特定字符和特定字符组?尝试以下方法: var str2 = str.replace(/(?:%20|\s)+/g, '

我对正则表达式没法理解。要打开此字符串:

 var str = "Hello my%20name is%20Jascination"
进入

我试过:

 var str2 = str.replace(/[20%]/w/s/g, '&')
 var str2 = str.replace(/[20%/w/s]/g, '&')
但是这些不起作用。使用Regex如何捕获特定字符和特定字符组?

尝试以下方法:

var str2 = str.replace(/(?:%20|\s)+/g, '&');
试试这个:

var str2 = str.replace(/(?:%20|\s)+/g, '&');
这很容易。使用或()

这很容易。使用或()


@jfriend00:
(?:…)
是一个非捕获组,因为您不需要捕获任何东西!您可以避免对正则表达式引擎执行此操作。但是,这是一个全局替换操作。这里没有捕获任何内容,您只将其应用于
%20
,而不是
\s
,这也会造成混淆。你似乎也不需要
+
,因为OP没有要求多个连续空格或
%20
单个
&
@jfriend00:的确,但我的模式支持几个背对背的空格或
%20
,因此我必须将它们放在一个组中,用
+
量词重复它。(在结果中避免连续的&&)好的,除了OP没有要求。只是想知道你的更复杂的答案比sectus答案有什么好处。@jfriend00:OP(通常)经常因为技术问题而停止思考,看不到未来的其他问题。但是,这不是一个复杂的模式。@jfriend00:
(?:…)
是一个非捕获组,因为您不需要捕获任何东西!您可以避免对正则表达式引擎执行此操作。但是,这是一个全局替换操作。这里没有捕获任何内容,您只将其应用于
%20
,而不是
\s
,这也会造成混淆。你似乎也不需要
+
,因为OP没有要求多个连续空格或
%20
单个
&
@jfriend00:的确,但我的模式支持几个背对背的空格或
%20
,因此我必须将它们放在一个组中,用
+
量词重复它。(在结果中避免连续的&&)好的,除了OP没有要求。只是想知道你的更复杂的答案比sectus答案有什么好处。@jfriend00:OP(通常)经常因为技术问题而停止思考,看不到未来的其他问题。然而,这不是一个复杂的模式。您的意思是在正则表达式中以
20%
为目标,而不是
%20
?您的意思是在正则表达式中以
20%
为目标,而不是
%20
var str2 = str.replace(/%20| /g, '&');