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.