2 hassasiyetli bir ondalık basamak için normal ifade nedir?
Geçerli örnekler :
123.12
2
56754
92929292929292.12
0.21
3.1
Geçersiz örnekler:
12.1232
2.23332
e666.76
Ondalık nokta isteğe bağlı olabilir ve tamsayılar da dahil edilebilir.
2 hassasiyetli bir ondalık basamak için normal ifade nedir?
Geçerli örnekler :
123.12
2
56754
92929292929292.12
0.21
3.1
Geçersiz örnekler:
12.1232
2.23332
e666.76
Ondalık nokta isteğe bağlı olabilir ve tamsayılar da dahil edilebilir.
Yanıtlar:
Geçerli normal ifade jetonları uygulamaya göre değişir. Genel bir form:
[0-9]+(\.[0-9][0-9]?)?
Daha kompakt:
\d+(\.\d{1,2})?
Her ikisi de ondalık basamaktan önce ve onda bir basamaktan sonra en az bir basamak olduğunu varsayar.
Tüm dizenin bu formun bir sayısı olmasını zorunlu kılmak için, ifadeyi başlangıç ve bitiş etiketlerine (Perl biçiminde) gibi sarın:
^\d+(\.\d{1,2})?$
Ondalık basamaktan ( .12
) önce öndeki basamağı olmayan sayıları ve 12.
tek bir nokta ( .
) girdisini hariç tutarken izleyen nokta ( ) içeren tam sayıları eşleştirmek için aşağıdakileri deneyin:
^(\d+(\.\d{0,2})?|\.?\d{1,2})$
()?
İsteğe bağlı hale getirmek için kesirli kısmı sarın . Bunun, 12.
Dahil Etme gibi formların daha çok benzeyeceğini unutmayın ^\d+\\.?\d{0,2}$
.
Kullanım ^\d{1,6}(\.\d{1,2})?$
tekrarını durdurmak ve ondalık değerin tümünün kısmına bir kısıtlama vermek.
-?
gibi önek ekleyerek negatifleri destekleyebilirsiniz -?\d+(\.\d{1,2})?
. Daha genel bir sayı biçimi için kesinlikle geçerli olmalarına rağmen, OP'nin sorusunda olmadığı için negatifler veya ondalık bir nokta ile başlamam. Buradaki yorumlar dizisi ".21" ile başa çıkmak için birkaç yol sunar.
^[0-9]+(\.[0-9]{1,2})?$
Ve düzenli ifadeler okumak korkunç olduğu için, çok daha az anlıyorum, işte ayrıntılı eşdeğer:
^ # Start of string
[0-9]+ # Require one or more numbers
( # Begin optional group
\. # Point must be escaped or it is treated as "any character"
[0-9]{1,2} # One or two numbers
)? # End group--signify that it's optional with "?"
$ # End of string
Sen yerini alabilir [0-9]
ile \d
(dahil çoğu düzenli ifade uygulamalarda PCRE'nin en ortak,). Ben bıraktım [0-9]
ben okumak daha kolay düşünüyorum.
Ayrıca, kontrol etmek için kullandığım basit Python betiği:
import re
deci_num_checker = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""")
valid = ["123.12", "2", "56754", "92929292929292.12", "0.21", "3.1"]
invalid = ["12.1232", "2.23332", "e666.76"]
assert len([deci_num_checker.match(x) != None for x in valid]) == len(valid)
assert [deci_num_checker.match(x) == None for x in invalid].count(False) == 0
+
İlk kapanış pareninden sonra kaldırın ,^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
yerine olmalı \.
çünkü .
işe yarayacak gibi görünecek, ancak herhangi bir karakterle eşleşecek (sadece ondalık basamakla değil). Örneğin, her iki 1z23
ve 1.23
bunu kaçmak yoksa geçerli düşünülebilecek
İsteğe bağlı eksi işareti eklemek ve 015
(sekizli sayılarla karıştırılabilen) gibi sayılara izin vermemek için şunu yazın:
-?(0|([1-9]\d*))(\.\d+)?
Bunu iki ondalık basamağa kadar kullanırım:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
geçişler:
.25
0.25
10.25
+0.25
geçmez:
-.25
01.25
1.
1.256
Ana cevap YANLIŞ çünkü geçerli 5.
veya 5,
girdi
Bu kod ele (ama benim örnek negatif numaraları yasak):
/^[0-9]+([.,][0-9]{1,2})?$/;
sonuçlar aşağıdaki gibidir:
true => "0" / true => "0,00" / true => "0,0" / true => "0,00" / true => "0,0" / true => "1,2" true => "1.1" / true => "1" / true => "100" true => "100.00" / true => "100.0" / true => "1.11" / true => "1,11" / false => "-5" / false => "-0.00" / true => "101" / false => "0.00.0" / true => "0.000" / true => "000.25" / false => ".25" / true => "100.01" / true => "100.2" / true => "00" / false => "5." / false => "6," / true => "82" / true => "81,3" / true => "
Eğer yapılması gereken olmayacak e
içinde e666.76
hesaba?
İle
(e|0-9)\d*\d.\d{1,2)
Bu benimle çalıştı:
(-?[0-9]+(\.[0-9]+)?)
Grup 1 şamandıra numaranızdır ve grup 2 sadece kesirdir.
Bu, üssel ve 2 basamağa kadar ondalık sayıya izin verir,
^[+-]?\d+(\.\d{2}([eE](-[1-9]([0-9]*)?|[+]?\d+))?)?$
1.2e-10
([0-9]+)?
daha iyi yazılmış \d*
. Şimdi eşleşmiyor 10e3
. OP de 2 basamağa kadar eşleştirmek istiyor.
function DecimalNumberValidation() {
var amounttext = ;
if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){
alert('Please enter only numbers into amount textbox.')
}
else
{
alert('Right Number');
}
}
fonksiyonu ondalık sayı hava durumunu ondalık basamakları olup olmadığını doğrular, "Doğru Sayı" diğer akıllıca "miktar metin kutusuna sadece sayı girin." uyarı mesajı gelecektir.
Teşekkürler... :)