d
- perbandingan yang mengejutkan [0-9]
dan d
dalam ungkapan biasa. Ujian awal yang dicadangkan [0-9]
lebih cepat, tetapi siasatan lanjut mendedahkan realiti yang lebih bernuansa: d
boleh d
kurang cekap dalam senario tertentu. Artikel ini menerangkan sebab -sebab di sebalik percanggahan ini.
ketat hanya sepadan dengan digit ASCII 0 hingga 9. [0-9]
semua d
digit Unicode, termasuk dari pelbagai skrip bukan Latin (mis., Parsi, Devanagari).
Julat pemadanan yang diperluas ini untuk
d
coretan kod berikut menggambarkan set aksara yang luas yang dipadankan dengan
d
<code class="language-csharp">var sb = new StringBuilder(); for (UInt16 i = 0; i < 0x10FFFF; i++) { if (char.IsDigit((char)i)) { sb.Append((char)i); } } Console.WriteLine(sb.ToString());</code>
. Output yang dihasilkan adalah senarai komprehensif digit Unicode, yang menonjolkan set aksara yang lebih besar berbanding dengan sepuluh digit yang dipadankan dengan char.IsDigit()
. d
Oleh itu, sementara [0-9]
menawarkan keserasian yang lebih luas,
mungkin pilihan yang lebih efisien. d
Atas ialah kandungan terperinci Adakah `\ d` kurang efisien daripada` [0-9] `dalam regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!