考虑这个Javascript正则表达式代码:
v = 'The dog jumped over the moon';
// Matches
if (v.match(/(jump)ed/)) {
alert('Initial: ' + RegExp.$1); // Alerts "jump"
}
// Obviously not matched, but RegExp object retains previous match
if (v.match(/(gygyujgujy)/)) {
alert(RegExp.$1);
}
// Alerts "jump" but shouldn't this be null/false etc?
alert('Final: ' + RegExp.$1);
第二个正则表达式,尽管不匹配,但仍保留第一个正则表达式匹配。
由于第二个正则表达式不匹配,RegExp对象是否应该为空?
答案 0 :(得分:2)
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n
“$ 1,...,$ 9属性是静态的,它们不是单个正则表达式对象的属性。而是始终将它们用作RegExp。$ 1,...,RegExp。$ 9。
只要成功匹配,这些属性的值就是只读和修改。“
由于您的第二个if语句从不匹配任何内容,因此不会将新值分配给$ 1
答案 1 :(得分:0)