Làm cách nào để đối sánh số âm với biểu thức chính quy này? Regex này hoạt động tốt với các giá trị dương, nhưng tôi muốn nó cũng cho phép các giá trị âm, ví dụ -10, -125,5, v.v.
^[0-9]\d*(\.\d+)?$
Cảm ơn
Làm cách nào để đối sánh số âm với biểu thức chính quy này? Regex này hoạt động tốt với các giá trị dương, nhưng tôi muốn nó cũng cho phép các giá trị âm, ví dụ -10, -125,5, v.v.
^[0-9]\d*(\.\d+)?$
Cảm ơn
Câu trả lời:
Bạn nên thêm dấu gạch ngang tùy chọn ở đầu bằng cách thêm -?
( ?
là một bộ định lượng có nghĩa là một hoặc không xuất hiện ):
^-?[0-9]\d*(\.\d+)?$
Tôi đã xác minh nó trong Rubular với các giá trị sau:
10.00
-10.00
và cả hai đều phù hợp như mong đợi.
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
Một số ví dụ về Biểu thức chính quy:
Số nguyên dương :
^\d+$
Số nguyên phủ định :
^-\d+$
Số nguyên :
^-?\d+$
Số dương :
^\d*\.?\d+$
Số âm :
^-\d*\.?\d+$
Số dương hoặc Số âm :
^-?\d*\.{0,1}\d+$
Số điện thoại :
^\+?[\d\s]{3,}$
Điện thoại có mã :
^\+?[\d\s]+\(?[\d\s]{10,}$
Năm 1900-2099 :
^(19|20)[\d]{2,2}$
Ngày (dd mm yyyy, d / m / yyyy, v.v.):
^([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}$
Tôi không biết tại sao bạn cần điều đó đầu tiên [0-9]
.
Thử:
^-?\d*(\.\d+)?$
Cập nhật
Nếu bạn muốn chắc chắn rằng bạn sẽ có một chữ số ở vị trí hàng đơn vị, thì hãy sử dụng
^-?\d+(\.\d+)?$
^-?\d+(\.\d+)?$
sẽ hoạt động nếu đúng như vậy
CẬP NHẬT (13/08/2014): Đây là mã tốt nhất cho số dương và số âm =)
(^-?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}
Tôi đã thử với những con số này và hoạt động tốt:
-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
-*
thành -?
vì nó phù hợp -------------
.
Điều này sẽ chỉ cho phép một -
hoặc +
ký tự khi được theo sau bởi một số:
^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
Điều này sẽ cho phép cả số nguyên dương và số nguyên âm
ValidationExpression = "^ -? [0-9] \ d * (\ d +)? $"
Tôi có một số thử nghiệm về regex trong url django, yêu cầu từ số âm sang số dương
^(?P<pid>(\-\d+|\d+))$
Chúng ta hãy tập trung vào (\-\d+|\d+)
phần này và bỏ qua phần khác, dấu chấm phẩy này |
có nghĩa là HOẶC trong regex, sau đó giá trị âm sẽ khớp với \-\d+
phần này và giá trị dương trong phần này\d+
Điều này phù hợp với tôi, cho phép cả số âm và số dương :
\-*\d+
Nếu sử dụng C #:
Regex.Match(someString, @"\-*\d+").Value;
Chỉ đối với số âm, điều này là hoàn hảo.
^-\d*\.?\d+$
^[+-]?\d{1,18}(\.\d{1,2})?$
chấp nhận các giá trị thập phân dương hoặc âm.
^(-?\d+\.)?-?\d+$
cho phép:
23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234
Nếu bạn có điều này val="-12XXX.0abc23"
và bạn chỉ muốn trích xuất số thập phân, trong trường hợp này, hàm regex ( ^-?[0-9]\d*(\.\d+)?$
) sẽ không giúp bạn đạt được nó.
đây là mã thích hợp với regex phát hiện chính xác:
var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);