Bir kelime sınırı \b
, tıpkı ^
ve $
gibi bir testtir.
Regexp motoru (regexpleri aramak için oluşturulmuş program modülü), \b
ile karşılaştığında karakter dizisindeki konumun bir kelime sınırı olup olmadığını kontrol eder.
Sözcük sınırı olarak nitelendirilen üç adet durum vardır:
- Karakter dizisi başlangıcında. Şayet ilk karakter dizisi karakteri bir kelime karakteriyse
\w
. - Karakter dizisinin iki karakterinin arası. Bir tanesi kelime karakteri
\w
ise ve diğeri değilse. - Karakter dizisi sonunda. Eğer son karakter dizisi karakter bir kelime karakteriyse
\w
.
Örneğin, regexp \bJava\b
ifadesi Merhaba, Java!
içerisinde bulunacaktır, burada Java
bağımsız bir kelimedir. Ancak Merhaba, JavaScript!
içerisinde bulunmaz.
alert( "Merhaba, Java!".match(/\bJava\b/) ); // Java
alert( "Merhaba, JavaScript!".match(/\bJava\b/) ); // null
Hello, Java!
karakter dizisinde aşağıdaki pozisyonlar \b
’ye karşılık gelir.
Sonuç olarak \Merhaba\b
ifadesiyle eşleşir, çünkü:
- Karakter dizisinin başlangıcı ilk
\b
testi ile eşleşir. - Sonrasında
Merhaba
kelimesi eşleşir. - Ardından
\b
,o
ile bir boşluk arasında bulunduğumuzdan dolayı tekrar eşleşir.
Aynı şekilde \bJava\b
şablonu de eşleşecektir. Ancak \bMerh\b
eşleşmez, (çünkü b
’den sonra bir kelime sınırı yoktur), aynı şekilde Java!\b
da (çünkü ünlem işareti \w
ile ifade edilen bir kelime karakteri değildir), dolayısıyla sonrasında bir kelime sınırı yoktur.
alert( "Merhaba, Java!".match(/\bMerhaba\b/) ); // Merhaba
alert( "Merhaba, Java!".match(/\bJava\b/) ); // Java
alert( "Merhaba, Java!".match(/\bMerh\b/) ); // null (eşleşme yok)
alert( "Merhaba, Java!".match(/\bJava!\b/) ); // null (eşleşme yok)
\b
’yi yalnızca kelimelerle değil, rakamlarla da kullanabiliriz.
Örnek vermek gerekirse, \b\d\d\b
şablonu 2 basamaklı sayılara bakacaktır. Başka bir deyişle, \w
’den başka, boşluk veya noktalama işareti olmayan (veya metin başlangıcı/bitişi) karakterlerle çevrili bağımsız 2 basamaklı sayılara bakacaktır.
alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78
alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56
\b
Latin alfabesi haricinde çalışmazKelime sınırı testi \b
, bir yanda \w
, diğer yanda \w
olmamama durumununun söz konusu olduğu pozisyonları kontrol eder.
Ancak \w
, a-z
şeklinde bir latin harfi (veya harf veya alt tire) anlamına gelir, sonuç olarak test Kiril veya Hiyeroglif gibi farklı karakterler için çalışmayacaktır.