Regex in JavaScript zur Validierung von Dezimalzahlen

Lesezeit: 4 Minuten

Benutzer-Avatar
Shardaprasad Soni

Ich möchte eine Regex in JavaScript zur Validierung von Dezimalzahlen.

Es sollte nur bis zu zwei Dezimalstellen zulassen. Zum Beispiel sollte es erlauben 10.89 aber nicht 10.899.

Es sollte auch nur einen Punkt zulassen (.). Zum Beispiel sollte es erlauben 10.89 aber nicht 10.8.9.

  • stackoverflow.com/q/468655/55209

    – Artjom Koschelev

    5. April 2012 um 6:48 Uhr

  • Duplikat: stackoverflow.com/q/468655/55209

    – Safarow

    5. April 2012 um 6:49 Uhr

Benutzer-Avatar
zatatatata

Versuchen Sie den folgenden Ausdruck: ^\d+\.\d{0,2}$ Wenn Sie möchten, dass die Dezimalstellen optional sind, können Sie Folgendes verwenden: ^\d+(\.\d{1,2})?$

BEARBEITEN: Um eine Zeichenfolgenübereinstimmung in Javascript zu testen, verwenden Sie das folgende Snippet:

var regexp = /^\d+\.\d{0,2}$/;

// returns true
regexp.test('10.5')

  • @micha, Entschuldigung, der Tippfehler in meinem ersten regulären Ausdruck wurde behoben

    – zatatatata

    5. April 2012 um 6:56 Uhr


  • Verwenden Sie var regexp = /^\d+\.?\d{0,2}$/; wenn Sie ein optionales Kommatrennzeichen haben möchten.

    – Marko

    24. Oktober 2019 um 19:08 Uhr

Benutzer-Avatar
John Slegers

Regex

/^\d+(\.\d{1,2})?$/

Demo

var regexp = /^\d+(\.\d{1,2})?$/;

console.log("'.74' returns " + regexp.test('.74'));
console.log("'7' returns " + regexp.test('7'));
console.log("'10.5' returns " + regexp.test('10.5'));
console.log("'115.25' returns " + regexp.test('115.25'));
console.log("'1535.803' returns " + regexp.test('1535.803'));
console.log("'153.14.5' returns " + regexp.test('153.14.5'));
console.log("'415351108140' returns " + regexp.test('415351108140'));
console.log("'415351108140.5' returns " + regexp.test('415351108140.5'));
console.log("'415351108140.55' returns " + regexp.test('415351108140.55'));
console.log("'415351108140.556' returns " + regexp.test('415351108140.556'));

Erläuterung

  1. / / : Anfang und Ende des Ausdrucks
  2. ^ : Was auch immer folgt, sollte am Anfang der Zeichenfolge stehen, die Sie testen
  3. \d+ : Es sollte mindestens eine Ziffer vorhanden sein
  4. ( )? : Dieser Teil ist optional
  5. \. : Hier kommt ein Punkt
  6. \d{1,2} : Hier sollten zwischen einer und zwei Ziffern stehen
  7. $ : Was auch immer davor steht, sollte am Ende der Zeichenfolge stehen, die Sie testen

Spitze

Sie können verwenden regexr.com oder regex101.com zum Testen regulärer Ausdrücke direkt im Browser!

^\d+(\.\d{1,2})?$

erlaubt:

  1. 244
  2. 10.89
  3. 9.5

wird verbieten:

  1. 10.895
  2. 10.
  3. 10.8.9

  • @ShardaprasadSoni siehe meinen Beitrag für ein Beispiel

    – zatatatata

    5. April 2012 um 8:32 Uhr

  • Wenn ich 0000.100 eingebe, was eine ungültige Dezimalzahl ist, wie sollte der regExp lauten?

    – Kaloyan Stamatov

    15. September 2014 um 15:17 Uhr

Zahlen mit höchstens 2 Nachkommastellen:

/^\d+(?:\.\d{1,2})?$/

Das sollte gut funktionieren. Bitte ausprobieren 🙂

Ich fand, dass ich verwenden könnte

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

für mehr als zwei Dezimalstellen.

Benutzer-Avatar
Harter Sinha

Probieren Sie einen regulären Ausdruck wie diesen aus:

(?=[^\0])(?=^([0-9]+){0,1}(\.[0-9]{1,2}){0,1}$)

Erlaubt:
1, 10,8, 10,89, 0,89, 0,89, 1000

Nicht erlaubt:
20. , 50.89.9, 12.999, ., Nullzeichen Beachten Sie, dass dies für positive Zahlen funktioniert

Bitte sehen Sie sich mein Projekt des Cross-Browser-Wertfilters des Texteingabeelements auf Ihrer Webseite unter Verwendung der JavaScript-Sprache an: Eingabeschlüsselfilter . Sie können den Wert als Ganzzahl oder Gleitkommazahl filtern oder einen benutzerdefinierten Filter schreiben, z. B. einen Telefonnummernfilter. Sehen Sie sich ein Beispiel für einen benutzerdefinierten Filter für die Eingabe einer Gleitkommazahl mit Dezimalzeiger und Beschränkung auf 2 Stellen nach dem Dezimalzeiger an:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Input Key Filter Test</title>
	<meta name="author" content="Andrej Hristoliubov [email protected]">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	
	<!-- For compatibility of IE browser with audio element in the beep() function.
	https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
	
	<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">		
	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
	
</head>
<body>
	<h1>Float field</h1>
<input id="Float" 
	onchange="javascript: onChangeFloat(this)"
	onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);"
/>
<script>
	function CreateFloatFilterCustom(elementID, onChange, onblur){
		try{
			inputKeyFilter.Create(elementID
				, onChange
				, function(elementInput, value){//customFilter
					if(value.match(/^(-?\d*)((\.(\d{0,2})?)?)$/i) == null){
						inputKeyFilter.TextAdd(isRussian() ?
								"Допустимый формат: -[0...9].[0...9] или -[0...9]e-[0...9]. Например: -12.34 1234"
								: "Acceptable formats: -[0...9].[0...9] or -[0...9]e-[0...9]. Examples: -12.34 1234"
							, elementInput);
						return false;
					}
					return true;
				}
				, onblur
			)
		} catch(e) {
			consoleError("Create float filter failed. " + e);
		}
	}
	
	CreateFloatFilterCustom("Float");
	
	function onChangeFloat(input){
		inputKeyFilter.RemoveMyTooltip();
		var elementNewFloat = document.getElementById("NewFloat");
		var float = parseFloat(input.value);
		if(inputKeyFilter.isNaN(float, input)){
			elementNewFloat.innerHTML = "";
			return;
		}
		elementNewFloat.innerHTML = float;
	}
</script>
 New float: <span id="NewFloat"></span>
</body>
</html>

Siehe auch meine Seite Beispiel für den Eingabeschlüsselfilter

  • Können wir vor der Dezimalstelle auf nur 6 Ziffern beschränken?

    – Mohammed Farooq

    28. Juli 2016 um 6:56 Uhr

  • ersetzen von /^(-?\d*)((\.(\d{0,2})?)?)$/i zu /^(-?\d{0,6})((\.( \d*)?)?)$/ich

    – Andrej

    29. Juli 2016 um 10:24 Uhr


1011640cookie-checkRegex in JavaScript zur Validierung von Dezimalzahlen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy