en javascript
console.log(/x(?=b[1-9])/.test('xb2')); // true console.log(/x(?=b[1-9])$/.test('xb2')); // falsecual es la diferencia
El primer patrón x(?=b[1-9]) coincide con x , seguido de b y un dígito. La entrada xb2 coincide con esto.
El segundo patrón x(?=b[1-9])$ está en conflicto y nunca puede coincidir con nada. Este patrón dice que coincida:
x the letter x (?=b[1-9]) assert that b and 1-9 follows $ match end of the input Es imposible que b[1-9] siga a x mientras que al mismo tiempo x es el final de la entrada. Use la primera versión en su pregunta.