为什么 JavaScript Replace 仅替换第一个实例:探索 RegExp Flag
当使用 JavaScript 的替换方法查找字符串并将其替换为另一个字符串时,您可能会遇到仅替换目标字符串的第一个实例的行为。出现此行为的原因是替换的默认行为是执行单个非全局搜索和替换操作。
全局替换:正则表达式标志
替换所有如果字符串中存在目标字符串的实例,则需要在替换方法中使用的正则表达式中指定“全局”标志(g)。此标志指示搜索和替换操作应在整个字符串中进行,替换目标字符串的每次出现。
例如,在您的代码中:
var date = $('#Date').val(); // e.g., "12/31/2009"
var id = 'c_' date.replace("/", ''); // c_1231/2009 (wrong)
要替换所有出现的“/”字符,需要指定“global”标志:
var id = 'c_' date.replace(new RegExp("/", "g"), ''); // c_12312009 (correct)
或者,您可以使用更短的语法:
var id = 'c_' date.replace(/\//g, ''); // c_12312009 (correct)
通过指定“global”标志,replace 方法将替换日期字符串中的每个斜杠字符,从而得到正确的输出。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3