gpt4 book ai didi

javascript - 在 njs (javascript) 中用连字符拆分驼峰式单词的正则表达式

转载 作者:行者123 更新时间:2023-12-03 16:47:01 26 4
gpt4 key购买 nike

我设法在 Perl 中创建了一个正则表达式来拆分驼峰式单词。但是,由于 javascript 不支持正向后视,我发现创建一个执行相同操作的正则表达式有点困难。

输入和预期输出在下面列出,格式为输入 -> 预期输出

  1. InstallAndSetup -> 安装和设置

  2. DeployingABCDefGhijk -> deploying-abc-def-ghijk(假设 abc 是一个经常使用的名词)

  3. OpenIDConnect -> openid-connect
  4. OAuth2Scopes->oauth2-scopes
  5. APISecurity -> api-security

我使用的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;

我正在努力转换同一个正则表达式 ((?<=[a-z])(?=[A-Z])(?!ID)(?!^Open$)|(?<=ABC)|(?< =API)(?=[A-Z])|(?=Connect)) 在 Javascript 中工作。任何帮助将不胜感激。

最佳答案

不确定正则表达式是否是这里的最佳选择,因为您混合了固定词和任意规则,但我认为有一点前瞻性:

(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);

关于javascript - 在 njs (javascript) 中用连字符拆分驼峰式单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59986459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com