javascript - 用于替换中间字母的正则表达式

标签 javascript regex string regex-lookarounds regex-group

<分区>

无效的正则表达式:无效的组

我尝试了 except () 、修复和更改。到 $ 但不起作用

var name = 'ABC'
var pattern = /(?<=.{1})./
return name.replace(pattern, " * ")

我想替换成'A*C'

无效的正则表达式:无效的组

最佳答案

您的模式使用了浏览器支持有限的后视。

如果支持 lookbehind,模式(可以缩短为 (?<=.). 将匹配任何字符,如果左边是任何字符。

这将匹配 B在 ABC 和 ABCD 中,所以 is 与中间字符不匹配。

另一种选择是使用:

^(.).(?=.$)

在替换使用中(没有前导和尾随空格):

$1*

注意.匹配除换行符以外的任何字符,因此它也匹配空格。如果您不想匹配空格,可以使用 \S相反。

var name = 'ABC';
var pattern = /^(.).(?=.$)/;
console.log(name.replace(pattern, "$1*"));

您可以在没有正则表达式的情况下替换中间字符:

let strings = [
  "A",
  "AB",
  "ABC",
  "ABCD",
  "ABCDE",
  "ABCDEF",
  "ABCDEFG",
  "ABCDEFGH",
  "ABCDEFGHI"
].reduce(function(a, c) {
  if (c.length % 2 === 1) {
    let evenHalf = (c.length - 1) / 2;
    a.push(c.substr(0, evenHalf) + '*' + c.substr(evenHalf + 1));
  }
  return a;
}, []);

console.log(strings);

关于javascript - 用于替换中间字母的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56387407/

相关文章:

python - 正则表达式排除表达式中的字符串和属性

Ruby 删除字符串的一部分

string - 如何索引 Golang 字符串中的字符?

javascript - 将 HTML5 Canvas 转换为 IMG 元素

R 中的正则表达式在其他地方不起作用

javascript - jquery不从DIV data-id获取PHP变量值,只输出变量名称

javascript - 使用正则表达式计算字符串中引号的数量

java - 为什么我的 BufferedReader 读取给定文件中不存在的文本?

javascript - 使用 jQuery 的 data() 将使用的数据创建 native dom 元素

javascript - 从 Firebase(网络)检索数据不起作用