Javascript 正则表达式 - 捕获前面有另一个字符串的字符串

标签 javascript regex regex-lookarounds

我正在尝试使用 JavaScript 正则表达式从 URL 中提取一些变量值。 URL 采用以下模式:

@companyname/dl-分子类型-组件名称

示例 URL 为:

@companyname/dl-atoms-link

我想使用一个正则表达式从 URL 中提取 molecularType 和 componentName 来给我一个数组:

['原子', '链接']

这是我尝试过的方法,使用了出色的 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 正则表达式 - 捕获前面有另一个字符串的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54314261/

相关文章:

javascript - 如果用户使用的是 Twitter Bootstrap 不支持的浏览器,我如何显示一个 div

javascript - 我的重置按钮似乎无法工作

C++:我应该使用什么正则表达式库?

javascript - 如何通过单击任意位置但排除内容本身来关闭内容?

javascript - 使用 C# 的单选按钮的 onclick 事件

arrays - 正则表达式:保留文本后的最后一个单词

python - 正则表达式用括号外的逗号分割字符串,并具有多个级别的python

javascript - 是否可以仅使用环视来匹配前后不重复的字符?

java - 正则表达式和前瞻 : java

java - 使用正则表达式在匹配字符串之前或末尾插入字符串