Me refiero a que los patrones encajarían con las mismas cadenas, sólo que en la tuya hay un lookahead assertion, y en la mía no lo hay, pero el contenido es exactamente el mismo, nada más.
Si incluímos el +- en el lookahead assertion estamos diciéndole a la expresión regular que no capture el signo, mientras que si no lo metemos ahí capturará todo lo que se encuentre:
Código PHP:
function e(q,noBr) {
document.body.appendChild( document.createTextNode(q) );
if(!noBr) document.body.appendChild( document.createElement("BR") );
}
var patron_LA = /^(?:+|-)?(d+)$/ ;
var patron = /^(+|-)?(d+)$/ ;
var numero="-12";
e("Sin lookahead:");
var matching = numero.match(patron);
for(var i in matching) {
e(i+" -->"+ matching[i]);
}
e("Con lookahead:");
var matching = numero.match(patron_LA);
for(var i in matching) {
e(i+" -->"+ matching[i]);
}
Salida:
Cita: Sin lookahead:
0 -->-12
1 -->-
2 -->12
index -->0
input -->-12
Con lookahead:
0 -->-12
1 -->12
index -->0
input -->-12
Es una tontería, y a efectos del test() da lo mismo, pero por apuntarla nada más.
Un saludo.