正则表达式:匹配模式后跟&或者使用捕获括号时的字符串结尾

时间:2018-06-08 12:09:43

标签: javascript regex

在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(&|$)'),但在使用捕获括号时失败。 我觉得这个问题已经问了很多次,但我还没有找到解决方案。

我做错了什么?

0 个答案:

没有答案