Mengapa regex untuk mencocokkan angka dari 1 hingga 10 biasanya ditulis sebagai berikut?
[1-9]|10
Bukannya:
[1-10]
Atau ini:
[1-(10)]
Hal ini dikarenakan regex bekerja dengan karakter, bukan dengan angka. [1-9]
setara dengan (?:1|2|3|4|5|6|7|8|9)
sementara [1-10]
akan menjadi (?:1|0)
(karena itu adalah rentang 1-1 dan angka 0).
Sederhananya, rentang dalam kelas karakter selalu mengacu pada rentang karakter yang bersebelahan, terlepas dari tampilannya. Bahkan jika mereka adalah angka, itu tidak berarti ada jenis rentang numerik apa pun.
Hal ini dikarenakan simbol []
mewakili kumpulan karakter, misalnya [0-5]
akan mencocokkan 0-5. Namun, 10 memiliki dua digit dan oleh karena itu [0-9]
tidak akan menghasilkan pencocokan yang tepat (hanya akan mencocokkan digit pertama, '1 ' dari '10 '.
Simbol pipa |
dapat dilihat sebagai operator "atau".