Sederhana ekspresi reguler untuk desimal dengan presisi 2
Apa ekspresi reguler untuk desimal dengan presisi 2?
Berlaku contoh:
123.12
2
56754
92929292929292.12
0.21
3.1
Tidak valid contoh:
12.1232
2.23332
e666.76
Titik desimal dapat opsional, dan bilangan bulat juga dapat disertakan.
258
17
Regex yang berlaku token berbeda dengan pelaksanaan. Bentuk generik adalah:
Lebih kompak:
Kedua berasumsi bahwa keduanya memiliki setidaknya satu digit sebelum dan satu setelah desimal.
Untuk mengharuskan seluruh string adalah jumlah dari formulir ini, bungkus ekspresi di mulai dan tag akhir seperti (di Perl's form):
Untuk mencocokkan angka tanpa diawali angka sebelum desimal (
.12
) dan seluruh angka yang memiliki tanda titik (12.
) sementara tidak termasuk masukan dari periode tunggal (.
), coba yang berikut ini:Ditambahkan
Dibungkus bagian fraksional dalam
()?
untuk membuatnya opsional. Diketahui bahwa ini tidak termasuk bentuk-bentuk seperti12.
Termasuk yang akan lebih suka^\d+\\.?\d{0,2}$
.Ditambahkan
Gunakan
^\d{1,6}(\.\d{1,2})?$
untuk menghentikan pengulangan dan memberikan pembatasan kepada seluruh bagian dari nilai desimal.Dan karena ekspresi reguler yang mengerikan untuk membaca, apalagi memahami, berikut ini adalah verbose setara:
Anda dapat mengganti
[0-9]
dengan\d
di sebagian besar ekspresi reguler implementasi (termasuk PCRE, yang paling umum). I've kiri itu sebagai[0-9]
karena saya pikir itu's mudah untuk dibaca.Juga, di sini adalah sederhana Python script saya digunakan untuk memeriksa ini:
Termasuk opsional tanda minus dan untuk melarang nomor seperti
015
(yang dapat keliru untuk oktal bilangan) menulis:Untuk angka-angka yang don't memiliki pemisah ribuan, saya suka ini sederhana, kompak regex:
atau, tidak terbatas pada ketepatan 2:
Kedua pertandingan
1
100
100.
100.74
100.7
0.7
.7
.72
Dan itu doesn't pertandingan string kosong (seperti \d.?\d akan)
Saya menggunakan ini selama satu sampai dua tempat desimal:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
melewati:.25
0.25
10.25
+0.25
doesn't lulus:
-.25
01.25
1.
1.256
Akan membuat hal-hal seperti
12.
diterima. Ini bukan apa yang umumnya diterima, namun jika dalam kasus anda perlu untuk menjadi "fleksibel", yang merupakan salah satu cara untuk pergi. Dan tentu saja[0-9]
dapat diganti dengan\
d, tapi saya kira itu lebih mudah dibaca dengan cara ini.Coba ini
Ini akan memungkinkan positif dan negatif tanda-tanda juga.
Jawaban utama adalah SALAH karena valids
5.
atau5,
inputkode ini menangani itu (tapi dalam contoh saya, angka negatif yang dilarang):
hasil di bawah ini:
Pada umumnya, yaitu terbatas desimal:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
.Ini bekerja dengan saya:
Kelompok 1 apakah anda float jumlah dan group 2 adalah sebagian kecil saja.
Saya mencoba yang satu dengan proyek saya. Hal ini memungkinkan angka dengan
+ | -
tanda-tanda juga.Won't anda perlu untuk mengambil
e
die666.76
ke akun?Dengan
menambahkan jawaban saya juga, seseorang mungkin menemukan itu berguna atau mungkin benar milikku juga.
Chrome 56 tidak menerima jenis pola (Chrome 56 accpeting 11.11. tambahan .) dengan jenis nomor, menggunakan jenis teks sebagai kemajuan.
<input type="text" ng-pola="/^[0-9]+(\.[0-9]{1,2})?$/" />Ini akan memungkinkan desimal dengan eksponensial dan upto 2 digit ,
Demo
fungsi akan memvalidasi setiap angka desimal cuaca jumlah tempat desimal atau tidak, ia akan berkata "Benar" bijak lain "Silakan masukkan hanya angka-angka dalam jumlah textbox." pesan peringatan akan muncul.
Terima kasih... :)