js RegExp test bug All In One


js RegExp test bug All In One

js regular expression

const regexExp = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/gi;

regexExp.test('bug');
// false

regexExp.test('??');
// true ?

regexExp.test('??');
// false

regexExp.test('??');
// true

regexExp.test('xxx????');
// true

regexExp.test('??');
// false ?

solution

js regexp test bug

test 缓存 bug

// note that we're using the `g` flag on the

const regex = /test/g
console.log(regex.lastIndex);
// 0

// returns true
regex.test('test123')
console.log(regex.lastIndex);
// 4

// returns false ??
regex.test('test123')
console.log(regex.lastIndex)
// 0

// returns true
regex.test('test123')
console.log(regex.lastIndex);
// 4


https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

match ?

const regex = /test/g
'test123'.match(regex)
// ['test']
!!'test123'.match(regex)
//true


'txest123'.match(regex)
//null
!!'txest123'.match(regex);
//false

https://benjaminjohnson.me/regex-test-side-effects

refs

https://melvingeorge.me/blog/check-if-string-contain-emojis-javascript


Flag Counter

?xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有??xgqfrms, 禁止转载 ???,侵权必究??!