将C#RegEx转换为JavaScript会出现错误Invalid Group

Converting C# RegEx to JavaScript gives error Invalid Group

本文关键字:错误 Invalid Group C#RegEx 转换 JavaScript      更新时间:2024-04-28

我有以下C#正则表达式:

var r = new Regex(@"
                (?<=[A-Z])(?=[A-Z][a-z]) |
                 (?<=[^A-Z])(?=[A-Z]) |
                 (?<=[A-Za-z])(?=[^A-Za-z])", RegexOptions.IgnorePatternWhitespace);
r.Replace(PageName, " ")

我正在尝试将其转换为JavaScript:

 var r= new RegExp('(?<=[A-Z])(?=[A-Z][a-z]) | (?<=[^A-Z])(?=[A-Z]) | (?<=[A-Za-z])(?=[^A-Za-z])');
PageName.split(pageRegex).join(" ")

但它给了我一个错误:

Uncaught SyntaxError: Invalid regular expression: /(?<=[A-Z])(?=[A-Z][a-z]) | (?<=[^A-Z])(?=[A-Z]) | (?<=[A-Za-z])(?=[^A-Za-z])/: Invalid group

更新:RegEx应该转换的一些示例:

  • 所有人对所有人
  • 人员CRB到人员CRB
  • 人与人
([A-Z])(?=[A-Z][a-z])|([^A-Z])(?=[A-Z])|([A-Za-z])(?=[^A-Za-z])

Javascript不支持lookbackind:(?<=,所以将lookbackind作为一个组,稍后替换它。

替换为$1$2$3 。请参阅演示。

https://regex101.com/r/aI4rA5/11

var re = /([A-Z])(?=[A-Z][a-z])|([^A-Z])(?=[A-Z])|([A-Za-z])(?=[^A-Za-z])/gm;
var str = 'AllPeople'nPeopleCRB'nPeople';
var subst = '$1$2$3 ';
var result = str.replace(re, subst);