Bug #086
🪲 Znajdź buga
console.log(/^[A-z]+$/.test("ABCD"))
console.log(/^[A-z]+$/.test("wxyz"))
console.log(/^[A-z]+$/.test("QwEr"))
console.log(/^[A-z]+$/.test("\\[]"))
console.log(/^[A-z]+$/.test("^_``"))
console.log(/^[A-z]+$/.test("1234"))
console.log(/^[A-z]+$/.test("a1b2"))
console.log(/^[A-z]+$/.test("\nnn"))
console.log(/^[A-z]+$/.test("a b "))
Chcemy przetestować różne ciągi znaków za pomocą wyrażenia regularnego ^[A-z]+$
.
^
oznacza początek ciągu znaków.
[A-z]
oznacza dowolny znak z zakresu od A do z.
+
oznacza jeden lub więcej znaków.
$
oznacza koniec ciągu znaków.
Metoda test()
wykonana na wyrażeniu regularnym zwraca wartość logiczną true
/false
w zależności od tego czy przekazany w argumencie ciąg znaków jest zgodny z wyrażeniem regularnym.
Jakie wartości zostaną zalogowane do konsoli dla przykładowych testów?
🧪 Rozwiązanie
console.log(/^[A-z]+$/.test("ABCD")) // true
console.log(/^[A-z]+$/.test("wxyz")) // true
console.log(/^[A-z]+$/.test("QwEr")) // true
console.log(/^[A-z]+$/.test("\\[]")) // true
console.log(/^[A-z]+$/.test("^_``")) // true
console.log(/^[A-z]+$/.test("1234")) // false
console.log(/^[A-z]+$/.test("a1b2")) // false
console.log(/^[A-z]+$/.test("\nnn")) // false
console.log(/^[A-z]+$/.test("a b ")) // false
Wartości false
zostają zwracane dla ciągów znaków, w których występują liczby, ponieważ zakres od A do z nie zawiera liczb.
Białe znaki jak spacje czy przejścia do nowej linii (\n
) również nie wchodzą w skład zakresu z wyrażenia regularnego, więc ich obecność w ciągu znaków również poskutkuje zwróceniem wartości false
.
Ciągi znaków składające się wyłącznie ze znaków z zakresu od A do z zwracają true
.
Duża niespodzianka czeka na nas gdy w ciągu znaków pojawią się znaki\
[ \ ] ^ _ `
Okazuje się, że są one również elementem zakresu [A-z]
w wyrażeniach regularnych.
Tablica kodowania znaków Unicode plasuje te znaki dokładnie pomiędzy zakresem [A-Z]
a [a-z]
.
Tworząc więc wyrażenie regularne dla zakresu znaków [A-z]
niejawnie szukamy też znaków [ \ ] ^ _ `
.
🎢 Plac zabaw
Otwórz edytor w nowym oknie📑 Linki
- RegExp.prototype.test() - JavaScript | MDN
- List of Unicode characters - Wikipedia
- RegExr: Learn, Build, & Test RegEx
❤️ Podobają Ci się bugi JS?
Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js