【问题标题】:Regex producing wrong results in google script正则表达式在谷歌脚本中产生错误的结果
【发布时间】:2017-09-14 06:48:23
【问题描述】:

我正在尝试使用正则表达式从字符串中提取某些内容。我知道我不必使用全局运算符,因为我只需要一场比赛,但我很好奇为什么它不起作用

var string = 'a02_ability10'

string.match(/(?:^a)([\d]+)/gi)

这并没有给我任何结果。删除它工作的全局运算符。我已经将它与正则表达式测试器中的全局运算符一起使用,并且可以正常工作。

试图让“02”出来

为什么它在这里不起作用?

【问题讨论】:

  • returns array ["a02"] 是你所期望的(你从来没有指出你所期望的或你实际得到的,所以很难知道你的问题是什么......)......没有 /g它返回["a02", "02"] ...所以,如果您将添加到问题中您的预期结果会非常好
  • 顺便说一句,您应该删除模式中所有无用的内容(查找 8 个字符)
  • 什么正则表达式测试器,它是否处于 JavaScript 模式?
  • @keith regex101 和 JaromandaX,它不会产生这个结果

标签: javascript regex google-sheets google-spreadsheet-api


【解决方案1】:

如果没有gi,它会在下一个位置给出完整匹配的字符串和组匹配的字符串([\d],即12)。(仅返回第一个匹配的字符串)

var string = 'a12_ability10'

string.match(/(?:^a)([\d]+)/)

结果:[“a12”,“12”,索引:0,输入:“a12_ability10”]

使用 gi :它只会给出完全匹配的字符串。

结果:["a12"]

请查看以下示例以便更好地理解。

var string = 'a12_ability10'

var result =string.match(/(?:^a)([\d]+)/)
console.log(result);

var string = 'a12_ability10'

var result =string.match(/(?:^a)([\d]+)/gi)
console.log(result);

var string = 'a12_a10'

var result= string.match(/(?:a)([\d]+)/);
console.log(result);


var result= string.match(/(?:a)([\d]+)/gi);
console.log(result);

【讨论】:

  • 我刚刚在谷歌脚本应用程序中运行了你的代码,记录器输出为 null null [a12, 12] [a12, a10] 这就是我的问题,为什么它给 null 为什么 gi 给我完整的结果,以前我会得到包含完整结果的第一个数组 [0] 和包含我的匹配项的第二个 [1],即“a12”为什么 (?:) 不匹配并包含结果
猜你喜欢
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2016-08-21
相关资源
最近更新 更多