Bagaimana cara menyertakan angka desimal negatif dalam ekspresi reguler ini?

90

Bagaimana cara mencocokkan bilangan negatif juga dengan ekspresi reguler ini? Regex ini berfungsi dengan baik dengan nilai positif, tetapi saya ingin juga mengizinkan nilai negatif misalnya -10, -125.5 dll.

^[0-9]\d*(\.\d+)?$

Terima kasih

pengguna1786107
sumber
1
@DanPuzey Apakah Anda tidak melihat Regex yang dia posting?
Nolonar
regexper.com
Dave Bish
saya mencoba menambahkan [-] di awal tetapi ini tidak berhasil. saya juga mencoba kombinasi perubahan kecil
user1786107
coba ini ^ -? \ d + (\. \ d +)? $
Civa
@DanPuzey kata-kata Anda tidak menambahkan apa-apa ke diskusi dan tidak baik
Wassadamo

Jawaban:

176

Anda harus menambahkan tanda hubung opsional di awal dengan menambahkan -?( ?adalah pembilang yang berarti satu atau nol kejadian ):

^-?[0-9]\d*(\.\d+)?$

Saya memverifikasinya di Rubular dengan nilai-nilai ini:

10.00
-10.00

dan keduanya cocok seperti yang diharapkan.

Mike Perrenoud
sumber
2
Anda harus menghindari titik itu, yaitu^-?[0-9]\d*(\.\d+)?$
Alex Shesterov
14
Jika ada potensi kebutuhan untuk menangkap angka-angka positif secara eksplisit (+10.00, digunakan dalam beberapa aplikasi), Anda dapat menggunakan^[-+]?[0-9]\d*(\.\d+)?$
Cemafor
129

Beberapa contoh ekspresi reguler:

Integer Positif :

^\d+$

Integer Negatif :

^-\d+$

Integer :

^-?\d+$

Angka Positif :

^\d*\.?\d+$

Angka Negatif :

^-\d*\.?\d+$

Angka Positif atau Angka Negatif :

^-?\d*\.{0,1}\d+$

Nomor telepon :

^\+?[\d\s]{3,}$

Telepon dengan kode :

^\+?[\d\s]+\(?[\d\s]{10,}$

Tahun 1900-2099 :

^(19|20)[\d]{2,2}$

Tanggal (hh bbm tttt, hh / b / tttt, dll.):

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$

IP v4 :

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
KF2
sumber
11

Saya tidak tahu mengapa Anda membutuhkan itu dulu [0-9].

Mencoba:

^-?\d*(\.\d+)?$

Memperbarui

Jika Anda ingin memastikan bahwa Anda memiliki digit di tempat satuan, gunakan

^-?\d+(\.\d+)?$
Andre Calil
sumber
1
Mungkin hanya untuk menjamin satu digit di tempat ^-?\d+(\.\d+)?$
satuan
Jawaban paling tepat. Saya tidak berpikir [0-9] diperlukan seperti yang ditunjukkan dalam jawaban yang diterima.
UzumakiL
3

DIPERBARUI (13/08/2014): Ini adalah kode terbaik untuk bilangan positif dan negatif =)

(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}

Saya mencoba dengan nomor ini dan berfungsi dengan baik:

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701
Pacho Zuñiga
sumber
Ubah -*menjadi -?karena cocok -------------.
Toto
Saya membuat beberapa perubahan tambahan, dan sekarang berfungsi dengan baik. Harap periksa bahwa =)
Pacho Zuñiga
1

Ini akan mengizinkan karakter -atau +hanya jika diikuti oleh angka:

 ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
Ian Timothy
sumber
1

Ini akan memungkinkan bilangan bulat positif dan negatif

ValidationExpression = "^ -? [0-9] \ d * (\ d +)? $"

Prajwal Rai
sumber
1

Saya punya beberapa percobaan tentang regex di django url, yang dibutuhkan dari angka negatif ke positif

^(?P<pid>(\-\d+|\d+))$

Mari kita fokus pada (\-\d+|\d+)bagian ini dan mengabaikan yang lain, titik koma ini |berarti OR dalam ekspresi reguler, maka nilai negatif akan cocok dengan \-\d+bagian ini , dan nilai positif menjadi ini\d+

Aditya Kresna Permana
sumber
1

Jika Anda memiliki ini val="-12XXX.0abc23"dan Anda hanya ingin mengekstrak angka desimal, dalam hal ini regex ( ^-?[0-9]\d*(\.\d+)?$) tidak akan membantu Anda mencapainya.
ini adalah kode yang tepat dengan ekspresi reguler yang benar:

var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);

Kemangi
sumber
0

Cukup tambahkan 0 atau 1 token:

^-?[0-9]\d*(.\d+)?$
BanksySan
sumber
Andre mengalahkan saya untuk itu, dia juga benar, tidak perlu token [0-9].
BanksySan
0

Hanya untuk bilangan negatif, ini sempurna.

^-\d*\.?\d+$
Kamleshkumar Gujarathi
sumber
0
^[+-]?\d{1,18}(\.\d{1,2})?$

menerima nilai desimal positif atau negatif.

Deepak Tambe
sumber
0

Ekspresi reguler untuk angka, titik desimal opsional, negatif opsional:

^-?(\d*\.)?\d+$;

berfungsi untuk bilangan bulat negatif, desimal, negatif dengan desimal

vivesh
sumber
0
^(-?\d+\.)?-?\d+$

mengizinkan:

23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234
ahli alkimia
sumber