无效的正则表达式:无效的组
除了(),我尝试了固定和更改。至$ 但不起作用
var name = 'ABC'
var pattern = /(?<=.{1})./
return name.replace(pattern, " * ")
我要替换为“ A * C”
无效的正则表达式:无效的组
答案 0 :(得分:0)
在这里,我们可能只想使用开始和结束锚点并编写一个简单的表达式,例如:
^([A-Z]).([A-Z])$
替换为:
$1*$2
const regex = /^([A-Z]).([A-Z])$/gm;
const str = `ABC`;
const subst = `$1*$2`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log(result);
如果不需要此表达式,可以在regex101.com中对其进行修改/更改。
jex.im可视化正则表达式:
答案 1 :(得分:0)
要使“ ABC”成为A * C或CDE成为C * E,您可以使用substr ..:)
dplyr
aggregate
答案 2 :(得分:0)
您的模式使用回溯方式,这对浏览器的支持有限。
如果支持向后搜索,则模式(如果左侧为任意字符,则可以缩短为(?<=.).
的任何字符。
在ABC中将与B
匹配,但在ABCD中将与^(.).(?=.$)
匹配,因此与中间字符不匹配。
另一个选择是使用:
$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);
您可以在不使用正则表达式的情况下替换中间字符:
.Options(o =>
{
o.Decorate<IErrorHandler>(c => {
var errorHandler = c.Get<IErrorHandler>();
var loggerFactory = c.Get<IRebusLoggerFactory>();
return new ErrorMessageHandler(errorHandler, loggerFactory));
});
}
答案 3 :(得分:0)
具有捕获组的正则表达式解决方案:
var name = 'ABC';
var pattern = /(.)./;
return name.replace(pattern, "$1 * ")
通过$1
可以在替换参数中找到与第一个括号匹配的内容。
快速测试:
var name = 'ABC'
var pattern = /(.)./
console.log(name.replace(pattern, "$1 * "))