<分区>
无效的正则表达式:无效的组
我尝试了 except () 、修复和更改。到 $ 但不起作用
var name = 'ABC'
var pattern = /(?<=.{1})./
return name.replace(pattern, " * ")
我想替换成'A*C'
无效的正则表达式:无效的组
<分区>
无效的正则表达式:无效的组
我尝试了 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/