首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >njs中用连字符分割骆驼案例词的Reg ex (javascript)

njs中用连字符分割骆驼案例词的Reg ex (javascript)
EN

Stack Overflow用户
提问于 2020-01-30 12:50:07
回答 1查看 85关注 0票数 3

我在Perl中创建了一个用于拆分camel大小写单词的regEx。但是,由于javascript不支持正面查找,所以我发现创建这样一个正则表达式有点困难。

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

  1. InstallAndSetup -> install-and-setup
  2. DeployingABCDefGhijk -> deploying abc def-ghijk(假设abc是一个名词,通常是used)
  3. OpenIDConnect -> openid-connect
  4. OAuth2Scopes->oauth2-scopes
  5. APISecurity -> api-security

)。

我使用的perl脚本如下所示

代码语言:javascript
复制
 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中。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-01-30 13:24:39

不确定正则表达式在这里是否是最好的选择,因为您有固定的单词和任意的规则,但是我想稍微向前看一下:

代码语言:javascript
复制
(OAuth2|OpenID|[A-Z]+$|[A-Z]+(?=[A-Z][^A-Z])|[A-Z][^A-Z]+)

这就把OAuth2和OpenID作为特例--否则,任何2个或更多大写字母和一个大写字母的序列,后面跟着的都是非大写字母。不同之处在于,这样可以捕捉到组(组1)中您想要的部分,并且可以遍历匹配。

如果您只想转换文本,可以使用以下内容:

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59986459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档