Bagaimana cara membuat ekspresi reguler yang mendeteksi angka heksadesimal dalam teks?
Misalnya, '0x0f4', '0acdadecf822eeff32aca5830e438cb54aa722e3', dan '8BADF00D'.
Bagaimana cara membuat ekspresi reguler yang mendeteksi angka heksadesimal dalam teks?
Misalnya, '0x0f4', '0acdadecf822eeff32aca5830e438cb54aa722e3', dan '8BADF00D'.
Jawaban:
Bagaimana dengan berikut ini?
0[xX][0-9a-fA-F]+
Mencocokkan ekspresi yang dimulai dengan 0, diikuti oleh x huruf besar atau kecil, diikuti dengan satu atau beberapa karakter dalam rentang 0-9, atau af, atau AF
/0x[\da-f]/i
, tetapi sebaliknya, +1.
Sintaks yang tepat bergantung pada persyaratan dan bahasa pemrograman Anda, tetapi pada dasarnya:
/[0-9a-fA-F]+/
atau lebih sederhananya, i
membuatnya peka huruf besar kecil.
/[0-9a-f]+/i
Jika Anda cukup beruntung bisa menggunakan Ruby, Anda bisa melakukan:
/\h+/
EDIT - Jawaban Steven Schroeder membuat saya menyadari bahwa pemahaman saya tentang bit 0x salah, jadi saya telah memperbarui saran saya. Jika Anda juga ingin mencocokkan 0x, padanannya adalah
/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i
TAMBAHKAN LEBIH BANYAK - Jika 0x harus opsional (seperti yang tersirat dalam pertanyaan):
/(0x)?[0-9a-f]+/i
Ini akan cocok dengan atau tanpa 0x
prefiks
(?:0[xX])?[0-9a-fA-F]+
Perlu disebutkan bahwa mendeteksi MD5 (yang merupakan salah satu contohnya) dapat dilakukan dengan:
[0-9a-fA-F]{32}
Jika Anda menggunakan Perl atau PHP, Anda dapat mengganti
[0-9a-fA-F]
dengan:
[[:xdigit:]]
Jika Anda mencari karakter heksadesimal tertentu di tengah string, Anda dapat menggunakan "\ xhh" di mana hh adalah karakter dalam heksadesimal. Saya sudah mencoba dan berhasil. Saya menggunakan kerangka kerja untuk C ++ Qt tetapi dapat menyelesaikan masalah dalam kasus lain, tergantung pada rasa yang perlu Anda gunakan (php, javascript, python, golang, dll.).
Jawaban ini diambil dari: http://ult-tex.net/info/perl/
Yang ini memastikan Anda memiliki tidak lebih dari tiga pasangan yang valid:
(([a-fA-F]|[0-9]){2}){3}
Lebih atau kurang dari tiga pasang karakter yang valid gagal untuk mencocokkan.
Jika Anda memerlukan ini dalam input di mana pengguna dapat mengetik 0
dan 0x
juga tetapi bukan nomor hex tanpa 0x
awalan:
^0?[xX]?[0-9a-fA-F]*$
Contoh lain: Nilai heksadesimal untuk warna css dimulai dengan tanda pagar, atau hash (#), lalu enam karakter yang bisa berupa angka atau huruf antara A dan F, inklusif.
^#[0-9a-fA-F]{6}