用于替换引号内字符的正则表达式

时间:2016-11-29 15:47:06

标签: javascript regex

我有两个测试字符串:

1+":"+2:xyz
1+"a:fb"+2:xyz

我正在尝试替换引号之间的:

我试过了:

(".*):(.*")

替换为:

$1Q$2

但我最终得到了这个:

1+"Q"+2:xyz
1+"Q"+2:xyz

但我想最终得到这个:

1+"Q"+2:xyz
1+"aQfb"+2:xyz
是的,请有人帮助我。必须在Javascript中工作。

编辑:

我已将测试工具切换为正常工作(即在浏览器中直接在javascript中进行)。

这现在有效:

var str = '1+"a:fb"+2:xyz';
var res = str.replace(/(".*):(.*")/g, "$1Q$2");

但是,如果我有两个:在两组引号中,如下所示:

1+"a:fb"+2+":"

我现在得到这个结果:

1+"a:fb"+2+"Q":xyz

1 个答案:

答案 0 :(得分:4)

实际上,您正在尝试替换由三部分组成的模式:

  1. 一点以repo.findBy("email", email).map { userOpt => val maybeUser1 = userOpt.filter { user => BCrypt.checkpw(password, user.password) } // or like this: // longer form, if more than one options or whatever val maybeUser2 = for { user <- userOpt if(BCrypt.checkpw(password, user.password)) } yield user } 开头且不包含""
  2. a :
  3. 一点既不包含:也不包含",以:
  4. 结尾

    因此表达式如下:

    "

    替换("[^:"]*):([^:"]*") 会导致

    $1Q$2

    您的工作不正常的原因在于greedy matching