2015-11-19 8 views
5
/^(\-|\+)?([0-9]+|Infinity)$/ 

Ho visto questo più volte quando sto cercando di filtrare le cose. Ci sono molte varianti ma di solito inizia sempre con (/ then something. Recentemente ho trovato questo come suggerimento per aiutare ad analizzare una stringa e assicurarmi che abbia solo numeri in essa. Sulla pagina js di Mozilla per RegExp ho trovato alcuni altri operatori ma ... non includono quasi tutti quelli che sono al di sopra

+0

Vedi anche: http://stackoverflow.com/questions/4736/learning-regular-expressions – jmunsch

+0

http://regexper.com/#%2F%5E(%5C-% 7C% 5C% 2B)% 3F (% 5B0-9% 5D% 2B% 7CInfinity)% 24% 2F – epascarello

+0

Ultimamente ho scoperto [Regex101.com] (https://regex101.com/r/kS1mL0/1) un Web 2.0 sito per scoprire, eseguire il debug e testare le espressioni regolari. Ha anche un debugger single step. – Paebbels

risposta

6

si tratta di un'espressione regolare quello incollato potrebbe corrispondere a un numero intero positivo/negativo, o abbinare la parola infinito Insomma, un'espressione regolare è:

Un'espressione regolare (regex o regexp in breve) è una stringa di testo speciale per la descrizione di un modello di ricerca. È possibile pensare alle normali espressioni come caratteri jolly su steroidi.

http://www.regular-expressions.info/

Si vedono spesso le espressioni regolari scritte come /expression_here/ perché questi tagli in molti linguaggi di programmazione sono un modo veloce per sviluppatori di creare oggetti di espressioni regolari.

Si potrebbe creare una semplice espressione di corrispondere a un numero con qualcosa di simile:

/^[0-9]*$/.test('44') // returns true 

e

/^[0-9]*$/.test('asdasd') // returns false 

Espressioni come queste e come quello che hai incollato vengono analizzati e trasformati in poco macchine (chiamate finite state machines). l'intero scopo della macchina è determinare se una stringa è una corrispondenza per l'espressione rappresentata dalla macchina o se non è una corrispondenza. È quindi possibile alimentare una stringa in una macchina del genere e restituirà la risposta a voi.

Nel nostro esempio di cui sopra, si alimentano le corde 44 e asdasd in un'espressione regolare /^[0-9]*$/ utilizzando il metodo test, e restituisce true perché 44 corrisponde all'espressione e false per asdasd perché non corrisponde.

Siamo in grado di rompere l'espressione regolare che hai incluso nel tuo post così:

^ significa che l'espressione regolare deve corrispondere a partire dall'inizio MOLTO della stringa

(\-|\+) mezzi partono la all'inizio della stringa e abbinare sia - o +, il punto interrogativo significa che questa parte è opzionale

[0-9]+|Infinity mezzi "corrisponde a uno o più numeri da 0 a 9", OR (|) m atch il testo Infinity

$ mezzi "e quindi richiede che la stringa finisce qui"

3

E 'un regular expression che abbinerà i numeri positivi/negativi naturali o Infinity.

/^(\-|\+)?([0-9]+|Infinity)$/ 

^(\-|\+) - l'inizio della stringa sia per il carattere letterale - o + (s).

? - L'espressione precedente, che sono i caratteri -/+, è facoltativa. In altre parole, l'espressione può essere abbinata 0 o 1 volte.

([0-9]+|Infinity)$ - La fine della stringa deve essere 1 o più cifre o la stringa Infinity.

// Matches: 
'-100'.match(/^(\-|\+)?([0-9]+|Infinity)$/); 
'+100'.match(/^(\-|\+)?([0-9]+|Infinity)$/); 
'Infinity'.match(/^(\-|\+)?([0-9]+|Infinity)$/); 
// Does NOT match: 
'5%'.match(/^(\-|\+)?([0-9]+|Infinity)$/); 
'20/1'.match(/^(\-|\+)?([0-9]+|Infinity)$/); 
'NaN'.match(/^(\-|\+)?([0-9]+|Infinity)$/); 
Problemi correlati