首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex有时返回结果,有时在类似字符串上返回null。

Regex有时返回结果,有时在类似字符串上返回null。
EN

Stack Overflow用户
提问于 2017-10-21 19:10:52
回答 2查看 49关注 0票数 0

我有下面的示例代码,其中有一个Excel公式数组,我正在使用regex试图将URL和超级链接的标题与字符串隔离开来。这似乎对一些人有效,但在另一些情况下返回null

我认为这可能是循环,但我也得到了坏的结果,如下面的例子2所示。

示例1:

代码语言:javascript
运行
复制
var linkList = ['=HYPERLINK("https://example.com","Example")', '=HYPERLINK("https://example2.com","Example 2")', '=HYPERLINK("https://example3.com","Example 3")', '=HYPERLINK("https://example4.com","Example 4")'];

const url_re = /".*?"/g;
const linkName_re = /\,(".*?")/g;

linkList.forEach(function(currentValue, index, array){
  +console.log(url_re.exec(currentValue));
  console.log(linkName_re.exec(currentValue));
  console.log("---------------------------");
});

输出:

代码语言:javascript
运行
复制
[ '"https://example.com"',
  index: 11,
  input: '=HYPERLINK("https://example.com","Example")' ]
[ ',"Example"',
  '"Example"',
  index: 32,
  input: '=HYPERLINK("https://example.com","Example")' ]
---------------------------
[ '","',
  index: 32,
  input: '=HYPERLINK("https://example2.com","Example 2")' ]
null
---------------------------
null
[ ',"Example 3"',
  '"Example 3"',
  index: 33,
  input: '=HYPERLINK("https://example3.com","Example 3")' ]
---------------------------
[ '"https://example4.com"',
  index: 11,
  input: '=HYPERLINK("https://example4.com","Example 4")' ]
null
---------------------------

示例2:

代码语言:javascript
运行
复制
const url_re = /".*?"/g;
const linkName_re = /\,(".*?")/g;

console.log(url_re.exec('=HYPERLINK("https://example.com","Example")'));
console.log(linkName_re.exec('=HYPERLINK("https://example.com","Example")'));
console.log("---------------------------");
console.log(url_re.exec('=HYPERLINK("https://example2.com","Example 2")'));
console.log(linkName_re.exec('=HYPERLINK("https://example.com","Example 2")'));
console.log("---------------------------");
console.log(url_re.exec('=HYPERLINK("https://example3.com","Example 3")'));
console.log(linkName_re.exec('=HYPERLINK("https://example.com","Example 3")'));
console.log("---------------------------");
console.log(url_re.exec('=HYPERLINK("https://example4.com","Example 4")'));
console.log(linkName_re.exec('=HYPERLINK("https://example.com","Example 4")'));
console.log("---------------------------");

输出:

代码语言:javascript
运行
复制
[ '"https://example.com"',
  index: 11,
  input: '=HYPERLINK("https://example.com","Example")' ]
[ ',"Example"',
  '"Example"',
  index: 32,
  input: '=HYPERLINK("https://example.com","Example")' ]
---------------------------
[ '","',
  index: 32,
  input: '=HYPERLINK("https://example2.com","Example 2")' ]
null
---------------------------
null
[ ',"Example 3"',
  '"Example 3"',
  index: 32,
  input: '=HYPERLINK("https://example.com","Example 3")' ]
---------------------------
[ '"https://example4.com"',
  index: 11,
  input: '=HYPERLINK("https://example4.com","Example 4")' ]
null
---------------------------
EN

Stack Overflow用户

回答已采纳

发布于 2017-10-21 20:10:13

为什么不尝试使用regex中的组来匹配URL和名称。像这样的东西

代码语言:javascript
运行
复制
\("(.*?)".*?\"(.*?)"

完整的例子可以是这样的

代码语言:javascript
运行
复制
var linkList = ['=HYPERLINK("https://example.com","Example")', '=HYPERLINK("https://example2.com","Example 2")', '=HYPERLINK("https://example3.com","Example 3")', '=HYPERLINK("https://example4.com","Example 4")'];
var myRegexp = /\("(.*?)".*?\"(.*?)"/g;
var match = myRegexp.exec(linkList);
while (match != null) {
  console.log(match[1])
  console.log(match[2])
  console.log("---------------------------");
  match = myRegexp.exec(linkList);
}

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46867027

复制
相关文章

相似问题

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