我希望在这些文字之间的“pw =”之后输出数字
例如
"blablabla pw=0.5 alg=blablalbala"
会让我0.5
我使用的正则表达式是:
/.*pw=+(.*)\s+alg=.*/g
在javascript的上下文中,我会在匹配函数中使用该正则表达式来获取数字:
str.match(/.*pw=+(.*)\s+alg=.*/g)
但是在regex101.com中,匹配和突出显示的结果根本不匹配(结果显示正则表达式是正确的而突出显示部分不是)
答案 0 :(得分:3)
您应该删除/g
全局修饰符,并建议将您的值匹配模式精确到[\d.]*
。
关键是当全局修饰符与String#match
一起使用时,所有捕获的组值都将被丢弃。
使用像
这样的正则表达式str.match(/\bpw=([\d.]*)\s+alg=/)
^^^^^^ ^
请注意,在模式的开头和结尾不需要.*
,String#match
不需要完整的字符串匹配(与Java中的String#matches()
不同)。
var str = 'blablabla pw=0.5 alg=blablalbala';
var m = str.match(/\bpw=([\d.]*)\s+alg=/);
if (m) {
console.log(m[1]);
}