javascript - Javascript 正则表达式 - 捕获前面有另一个字符串的字符串
问题描述
我正在尝试使用 Javascript 正则表达式从 URL 中提取一些变量值。URL 采用以下模式:
@companyname/dl-molecularType-componentName
.
一个示例 URL 是:
@companyname/dl-atoms-link
我想使用一个正则表达式从 URL 中提取分子类型和组件名称,给我一个数组:
['atoms', 'link']
这是我使用出色的RegExr站点尝试过的方法:
正则表达式:
/(@company\/dl+-)+(?!\1)/g
我的想法是第一个捕获组将捕获@companyname/dl-
,第二个将捕获不在第一组中的所有内容。然而 RegExr 似乎暗示这将返回与第一个捕获组相同的结果。任何人都可以帮忙吗?
谢谢
解决方案
您可以使用如下所示的东西(请注意,我们知道结构并且可以更好地微调正则表达式):
function extract_fields(url)
{
var match = url.match(/@[^\/]+\/dl-([^-]+)-(\w+)/);
if ( match ) {
return {molecularType: match[1], componentName: match[2]};
}
return false;
}
console.log(extract_fields('@companyname/dl-molecularType-componentName'));
console.log(extract_fields('@companyname/dl-atoms-link'));
推荐阅读
- javascript - javascript获取href.replace中间字符串
- android-studio - Android Studio:如何在文件更改时自动重新运行单元测试?
- asp.net - 无法将 css 应用到它说拒绝应用内联 css 的 asp.net mvc 登录页面,
- python - Python可视化2条形图按列和年份分组
- python - Django ORM查询嵌套模型
- shared-libraries - x86_64-w64-mingw32-g++ options -static-libgcc -static-libstdc++ 似乎在 g++ 中被破坏了
- python - 使用 def 无法搜索列表中的元素
- powershell - 安装失败时远程安装脚本并生成日志文件?
- vue.js - Bootstrap Vue 侧边栏 关闭侧边栏后滚动回切换按钮所在的位置
- javascript - Nodemailer 内联样式并不总是有效