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, '&');