在javascript中我希望能够匹配字符串中的特定模式,但前提是它以&
或字符串结尾结束。
例如,我希望能够抓住' fifi'在:
'foo=fifi
或'foo=fifi&titi
。
我有什么:
var regex = new RegExp('^foo=(.*)(&|$)');
var input1 = 'foo=fifi';
var match1 = input1.match(regex);
var input2 = 'foo=fifi&titi';
var match2 = input2.match(regex);
console.log('match1', match1);
console.log('match2', match2);
输出:
match1: [ 'foo=fifi',
'fifi', // OK
'',
index: 0,
input: 'foo=fifi' ]
match2: [ 'foo=fifi&titi',
'fifi&titi', // NOT OK: should only catch 'fifi'
'',
index: 0,
input: 'foo=fifi&titi' ]
我期待正则表达式在找到&
时停止并仅返回' fifi',但它会返回所有内容直到字符串结尾。
(&|$)
适用于更简单的正则表达式(例如:'^foo(&|$)'
),但在使用捕获括号时失败。
我觉得这个问题已经问了很多次,但我还没有找到解决方案。
我做错了什么?