我想要一个匹配字符 &
的 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)
)
最佳答案
您可以将第一组变成 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"));
}
关于JavaScript Regex 仅当字符仅出现后跟字母数字字符时才匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50230136/