JavaScript Regex 仅当字符仅出现后跟字母数字字符时才匹配

标签 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)
)

最佳答案

您可以将第一组变成 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/

相关文章:

javascript - 如何使用javascript获得自动点击的链接

javascript - Windows Phone 7 Mango IE 中的触摸事件

javascript - 正则表达式:匹配字符串中不包含下划线的所有单词

android - 正则表达式在匹配后提取 5 个单词

javascript - 如何使用 margin auto Css angular 4 向左移动跨度

javascript - 如何在 Angularjs 中将 json 响应显示为代码而不是字符串?

javascript - Object.assign 是如何工作的?

C++11 regex_error - 为什么? (代码 : 2)

javascript - 为什么箭头函数隐含的 `return` 在这种情况下不起作用(TS)?

typescript - Visual Studio Code 使用的是哪个 TypeScript 版本?如何更新?