Javascript RegExp不会返回解析版本号字符串的预期结果
我有像这样的文件名Javascript RegExp不会返回解析版本号字符串的预期结果,javascript,regex,google-apps-script,Javascript,Regex,Google Apps Script,我有像这样的文件名 TACO - v3 - something BURRITO - v4.3 Enchilada - v5.1 - something 我想解析出这些甜美的版本(v5.1) 但这只返回第一个\S(因此我得到的是v5而不是v5.1)。我在其他地方读到谷歌应用程序脚本regex不做*或+,这似乎很疯狂,似乎很多人都在使用*而且它对他们有效。我做错了什么 再说一遍,我需要完整的版本号(2或4个字符),不管文件名后面是否有任何内容 var regExp = new RegExp('-
TACO - v3 - something
BURRITO - v4.3
Enchilada - v5.1 - something
我想解析出这些甜美的版本(v5.1)
但这只返回第一个\S(因此我得到的是v5而不是v5.1)。我在其他地方读到谷歌应用程序脚本regex不做*或+,这似乎很疯狂,似乎很多人都在使用*而且它对他们有效。我做错了什么
再说一遍,我需要完整的版本号(2或4个字符),不管文件名后面是否有任何内容
var regExp = new RegExp('- (v.\S*)\s*');
也适用于我的正则表达式测试仪,但不适用于GAS。预期结果v5.1,实际结果v5如果不使用
\.
转义正则表达式中的
,它将成为一个与任何字符匹配的特殊通配符。使用模式/v\d+(\.\d+)/
,您可以匹配一个文本v
,后跟一个或多个数字,后跟一个可选文本
和另一个数字序列。如果您有v5.6.2
等版本,您可能希望使此组与*
量词匹配零次或多次
const data=`TACO-v3-something
墨西哥煎饼-v4.3
Enchilada-v5.1-something`;
const result=data.match(/v\d+(\。\d+)*/g);
控制台日志(结果)
尝试双转义\S
,我认为您可以省略点var regExp=new regExp('-(v\\S*))代码>
var regExp = new RegExp('- (v.\S*)\s*');