我想要一个只与字符&
匹配的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)
)

答案 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"));
}