Regex consente cifre e un singolo punto

Quale sarebbe la regex per consentire cifre e un punto? Riguardo a questo \D ammette solo cifre, ma non consente un punto, ho bisogno che permetta cifre e un punto questo è riferito come valore float Devo essere valido quando faccio una funzione keyup in jQuery, ma tutto ciò di cui ho bisogno è la regex che consente solo quello che mi serve per consentire.

Questo sarà nel nativo della funzione di replace di JavaScript per rimuovere non cifre e altri simboli (eccetto un punto).

Saluti.

Se si desidera consentire 1 e 1.2 :

 (?<=^| )\d+(\.\d+)?(?=$| ) 

Se si desidera consentire 1 , 1.2 e .1 :

 (?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| ) 

Se vuoi consentire solo 1.2 (solo float):

 (?<=^| )\d+\.\d+(?=$| ) 

\d consente le cifre (mentre \D consente qualsiasi cosa tranne le cifre).

(?<=^| ) controlla che il numero sia preceduto da uno spazio o dall'inizio della stringa. (?=$| ) assicura che la stringa sia seguita da uno spazio o dalla fine della stringa. Ciò assicura che il numero non faccia parte di un altro numero o nel mezzo di parole o altro.

Modifica : ha aggiunto più opzioni, ha migliorato le espressioni regolari aggiungendo lookahead e behinds per assicurarsi che i numeri siano autonomi (cioè non sono nel mezzo di parole o altri numeri.

 \d*\.\d* 

Spiegazione:

\ d * – un numero qualsiasi di cifre

\. – un punto

\ d * – più cifre.

Questo corrisponderà a 123.456 , .123 , 123. , ma non 123

Se si desidera che il punto sia facoltativo, nella maggior parte delle lingue (non si conosce jquery), è ansible utilizzarlo

 \d*\.?\d* 

Il mio tentativo è la soluzione combinata.

 string = string.replace(',', '.').replace(/[^\d\.]/g, "").replace(/\./, "x").replace(/\./g, "").replace(/x/, "."); string = Math.round( parseFloat(string) * 100) / 100; 

Soluzione di prima linea da qui: regex sostituendo più periodi in numero mobile . Sostituisce la virgola “,” con il punto “.” ; Sostituisce la prima virgola con x; Rimuove tutti i punti e sostituisce x torna a punto.

La seconda riga pulisce i numeri dopo il punto.

Prova questo

 boxValue = boxValue.replace(/[^0-9\.]/g,""); 

Questa espressione regolare consentirà solo cifre e punti nel valore della casella di testo.