我的文件名类似于
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
答案 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);