我在Perl中创建了一个用于拆分camel大小写单词的regEx。但是,由于javascript不支持正面查找,所以我发现创建这样一个正则表达式有点困难。
输入和预期输出以输入->预期输出格式在下面列出了
)。
我使用的perl脚本如下所示
my $r = shift;
my $uri = $r->uri;
@uri = split /(?<=[a-z])(?=[A-Z])(?!ID)(?!^Open$)|(?<=ABC)|(?<=API)(?=[A-Z])|(?=Connect)/,$uri;
$uri = join ("-", @uri);
$uri = lc($uri);
return $uri;我很难将同样的regex ((?<=a-z)(?=A-Z)(?!ID)(?!^Open$)|(?<=ABC)|(?<=API)(?=A-Z)|(?=Connect))转换到Javascript中。任何帮助都将不胜感激。
发布于 2020-01-30 13:24:39
不确定正则表达式在这里是否是最好的选择,因为您有固定的单词和任意的规则,但是我想稍微向前看一下:
(OAuth2|OpenID|[A-Z]+$|[A-Z]+(?=[A-Z][^A-Z])|[A-Z][^A-Z]+)这就把OAuth2和OpenID作为特例--否则,任何2个或更多大写字母和一个大写字母的序列,后面跟着的都是非大写字母。不同之处在于,这样可以捕捉到组(组1)中您想要的部分,并且可以遍历匹配。
如果您只想转换文本,可以使用以下内容:
uri.replace(/(OAuth2|OpenID|[A-Z]+$|[A-Z]+(?=[A-Z][^A-Z])|[A-Z][^A-Z]+)/, function(v) { return "-"+v.toLowerCase(); });
uri = uri.substring(1);https://stackoverflow.com/questions/59986459
复制相似问题