GAS Regex未返回预期结果

时间:2019-05-16 22:43:26

标签: regex google-apps-script

我的文件名类似于

TACO - v3 - something
BURRITO - v4.3
Enchilada - v5.1 - something

我想解析那些可爱的版本(v5.1)。

    var regExp = new RegExp("- (v.\S*)");
    var version = regExp.exec(fileName)[1];

但是那只会返回第一个\ S(所以我得到v5而不是v5.1)。我在其他地方读到Google Apps脚本正则表达式不执行*或+,这看起来很疯狂,而且似乎很多其他人都在使用*,并且对他们有用。我在做什么错了?

重申,我需要完整的版本号(2或4个字符),而不管文件名中是否紧随其后。

var regExp = new RegExp('- (v.\S*)\s*');

也可以在我的正则表达式测试器中使用,但不能在GAS中使用。预期结果v5.1,实际结果v5

1 个答案:

答案 0 :(得分:2)

如果您不使用.在正则表达式中转义\.,它将成为匹配任何字符的特殊通配符。使用模式/v\d+(\.\d+)?/,可以匹配文本v,后跟一个或多个数字,然后匹配可选的文本.和另一位数字。如果您使用*之类的版本,则可能希望使用v5.6.2量词使该组匹配零次或多次。

const data = `TACO - v3 - something
BURRITO - v4.3
Enchilada - v5.1 - something`;

const result = data.match(/v\d+(\.\d+)*/g);
console.log(result);