为什么这个regex替换会在开头删除一个符号,而不是在结尾

Why does this regex replace remove a symbol at the start, but not at the end?

本文关键字:符号 一个 结尾 替换 regex 开头 为什么 删除      更新时间:2023-09-26

我正试图从这个字符串中删除撇号:"'234324234234234236548723adf83287942'"

我正在尝试使用这个:

var specialId = otherSpecialId[0].trim().replace(/^[']*$/,'');

尝试获得CCD_ 2。

但我似乎无法破解它。如何删除撇号(')?

只需单独使用'和全局修饰符:

var specialId = otherSpecialId[0].trim().replace(/'/g,'');

或者,如果引号总是在开始和结束处,则根本不需要使用正则表达式:

var specialId = otherSpecialId[0].trim().slice(1, -1);
  • slice()-MDN文档

有些人在遇到问题时会想"我知道,我会用正则表达式。"现在他们有两个问题—Jamie Zawinski

这应该能在中工作

otherSpecialId[0].trim().replace(/'/g, '')

这适用于

var str = "'234324234234234236548723adf83287942'";
var rep = str.replace(/'/g,"");
alert(rep);

http://jsfiddle.net/jasongennaro/qyHth/

g告诉它要贪婪。。。并替换CCD_ 6的每个实例。

替换(/'/g,")

这将所有[']替换为空字符串

'/g'全局标志,需要补充所有发生的,而不仅仅是第一次

工作示例JSFiddle

var input = "'"'234324234234234236548723adf83287942''"";
alert("Before replace :  " + input);
input = input.replace(/'/g,"");
alert("Aftwer replace :  " + input);

在这种情况下,您需要不替换'。当前您正在替换以'开头的整个字符串。

所以

.replace(/'/g,'');

可能会起作用。或

.replace(/^'|'$/g,'');

如果您只想替换开头和结尾中的那些。