in javascript
console.log(/x(?=b[1-9])/.test('xb2')); // true
console.log(/x(?=b[1-9])$/.test('xb2')); // false
what is difference ?
CodePudding user response:
The first pattern x(?=b[1-9]) matches x which is then followed by b and a digit. The input xb2 matches this.
The second pattern x(?=b[1-9])$ is conflicting, and can never match anything. This pattern says to match:
x the letter x
(?=b[1-9]) assert that b and 1-9 follows
$ match end of the input
It is impossible for b[1-9] to follow x while at the same time x is the end of the input. Use the first version in your question.
