JavaScript正则表达式仅在字符仅出现后跟字母数字字符

时间:2018-05-08 09:18:03

标签: javascript regex typescript

我想要一个只与字符&匹配的JavaScript正则表达式,只要它出现一次后跟一个字母数字字符。

示例:

  • &De&&let&&&e A&ll→只应与&D&l
  • 匹配
  • Hum&&an&s→应该只匹配&s

这就是我想出来的,但这不太对劲:

(?:[^\&]|^)\&([a-zA-Z0-9])



var strings = `&De&&let&&&e A&ll
 Hum&&an&s`

console.log(
  strings.match(/(?:[^\&]|^)\&([a-zA-Z0-9])/g)
)




1 个答案:

答案 0 :(得分:2)

您可以将第一个组转换为capturing group,以便可以使用$1占位符(也称为replacement backreference)恢复替换字符串中的值。以类似的方式,您可以将捕获的字母数字字符恢复到另一个组中。

以下是在您定义的上下文中将&替换为#的示例:

var strs = ['&De&&let&&&e A&ll', 'Hum&&an&s'];
var rx = /(^|[^&])&([A-Z0-9])/gi;
for (var s of strs) {
	console.log(s.replace(rx, "$1#$2"));
}