Regex in JavaScript voor het valideren van decimale getallen

Ik wil een regex in JavaScript voor het valideren van decimale getallen.

Het zou slechts tot op twee decimalen. Bijvoorbeeld, het zou 10.89 maar niet 10.899.

Het moet ook mogelijk slechts één punt (.). Bijvoorbeeld, het zou 10.89 maar niet 10.8.9.

 

11 Replies
  1. 33

    Probeer de volgende expressie: ^\d+\.\d{0,2}$ Als u wilt dat de decimalen optioneel, u kunt gebruik maken van de volgende: ^\d+(\.\d{1,2})?$

    EDIT: Voor het testen van een tekenreeks overeenkomen in Javascript de volgende code gebruiken:

    var regexp = /^\d+\.\d{0,2}$/;
    
    //returns true
    regexp.test('10.5')
    • sorry vast de typo in mijn eerste regexp
  2. 27
    ^\d+(\.\d{1,2})?$

    zal toestaan:

    1. 244
    2. 10.89
    3. 9.5

    zal niet toestaan:

    1. 10.895
    2. 10.
    3. 10.8.9
    • Hallo ik wil toestaan 10. ook.
    • Hoe te gebruiken ^\d+(\.\d{0,2})?$ in javascript? Het geeft fout
    • zie mijn bericht voor een voorbeeld
    • Als ik 0000.100 die zal worden ongeldige decimale wat de regExp moet worden?
  3. 12

    Regex

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

    Demo

    JS:

    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'));


    Uitleg

    1. // : het begin en het einde van de expressie
    2. ^ : wat volgt moet worden aan het begin van de tekenreeks die u aan het testen bent
    3. \d+ : er moet ten minste één cijfer
    4. ( )? : dit onderdeel is optioneel
    5. \. : hier gaat een dot
    6. \d{1,2} : er moet worden tussen één en twee cijfers hier
    7. $ : wat voorafgaat, moet deze worden aan het einde van de tekenreeks die u aan het testen bent

    Tip

    Kunt u gebruik maken van regexr.com of regex101.com voor het testen van reguliere expressies direct in de browser!

    • dit lijkt niet te werken voor mij
    • Zou u mij enige informatie? Wat bedoel je met “niet werken”? Welke problemen ondervindt u met de oplossing die ik voorstel?
  4. 3

    Getallen met maximaal 2 decimalen:

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

    Dit zou moeten werken. Probeer het uit 🙂

  5. 2

    Zie mijn project van de cross-browser filter van de waarde van de tekst input element op uw website met behulp van de JavaScript-taal: Toets Input Filter . Via een filter kunt u de waarde van een geheel getal, een float, of het schrijven van een aangepast filter, zoals een telefoonnummer filter. Zie een voorbeeld van een aangepast filter van de input van een float getal met een decimale aanwijzer en beperking tot 2 cijfers na de decimale aanwijzer:

    HTML:

    <!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>

    Zie ook mijn pagina voorbeeld van de toets input filter

    • Kunnen we beperken door vóór decimaal slechts 6 cijfers ?
    • vervangen van /^(-?\d*)((\.(\d{0,2})?)?)$/i /^(-?\d{0,6})((\.(\d*)?)?)$/ik
  6. 1

    Proberen een reguliere expressie als deze:

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

    Toegestaan:
    1,
    10.8,
    10.89,
    .89,
    0.89,
    1000

    Niet Toegestaan:
    20. ,
    50.89.9,
    12.999,
    .,
    Null-teken
    Opmerking dit werkt voor positieve getallen

    • Dit werkte voor mij in js. Bedankt
    • hoewel enkele zaken niet werken zoals .45
  7. 0

    ten opzichte van het antwoord gven van mic…
    het niet valideren van alles wat in sommige van de platforms waarop ik werk bij…
    om precies te zijn het niet eigenlijk werken in de Droom Viewer..

    hierbij..
    ik schrijf het nogmaals..die zal werken op elk platform..
    “^[0-9]+(.[0-9]{1,2})?$”..
    thnkss..

  8. 0
     function CheckValidAmount() {
            var amounttext = document.getElementById('txtRemittanceNumber').value;            
            if (!(/^[-+]?\d*\.?\d*$/.test(amounttext))){
                alert('Please enter only numbers into amount textbox.')
                document.getElementById('txtRemittanceNumber').value = "10.00";
            }
        }

    Dit is de functie die decimaal getal met een aantal decimalen en zonder decimalen.

    Dankzij … 🙂

    • Kunt u plaatst de code als tekst in plaats van een afbeelding?
    • zeker , nu het bewerkt.. nu Gelukkig van…. 🙂
    • want wat heb je gebruikt var bedrag = parseFloat(amounttext), als later u test(amounttext) en het bedrag wordt niet overal gebruikt?
  9. 0

    Het schema voor het doorgeven van de waarde in de vorm van een tekenreeks. De regex zal valideren van een reeks van ten minste één cijfer, eventueel gevolgd door een periode en precies twee cijfers:

    {
        "type": "string",
        "pattern": "^[0-9]+(\\.[0-9]{2})?$"
    }

    Het schema hieronder is gelijk, behalve dat het ook mogelijk lege tekenreeksen:

    {
        "type": "string",
        "pattern": "^$|^[0-9]+(\\.[0-9]{2})?$"
    }
  10. -3

    Werkt dit?

    [0-9]{2}.[0-9]{2}
    • . staat voor een willekeurig teken | [0-9] is hetzelfde als \d

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *