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.
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+)?$
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+
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);
Jawaban:
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:
dan keduanya cocok seperti yang diharapkan.
sumber
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
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 :
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}$
sumber
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+)?$
sumber
^-?\d+(\.\d+)?$
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
sumber
-*
menjadi-?
karena cocok-------------
.Ini akan mengizinkan karakter
-
atau+
hanya jika diikuti oleh angka:^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
sumber
Ini akan memungkinkan bilangan bulat positif dan negatif
sumber
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+
sumber
Ini berhasil untuk saya, mengizinkan angka negatif dan positif :
Jika menggunakan C #:
Regex.Match(someString, @"\-*\d+").Value;
sumber
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);
sumber
Cukup tambahkan 0 atau 1 token:
^-?[0-9]\d*(.\d+)?$
sumber
Hanya untuk bilangan negatif, ini sempurna.
^-\d*\.?\d+$
sumber
^[+-]?\d{1,18}(\.\d{1,2})?$
menerima nilai desimal positif atau negatif.
sumber
Ekspresi reguler untuk angka, titik desimal opsional, negatif opsional:
^-?(\d*\.)?\d+$;
berfungsi untuk bilangan bulat negatif, desimal, negatif dengan desimal
sumber
^(-?\d+\.)?-?\d+$
mengizinkan:
23425.23425 10.10 100 0 0.00 -100 -10.10 10.-10 -10.-10 -23425.23425 -23425.-23425 0.234
sumber