W3docs

Flag m di JavaScript Regex (Multiline)

Il flag m nelle espressioni regolari JavaScript permette agli ancoraggi ^ e $ di corrispondere all'inizio e alla fine di ogni riga in una stringa multiriga.

Introduzione alla modalità multiriga

Il flag m in JavaScript nelle espressioni regolari consente agli ancoraggi ^ e $ di corrispondere all'inizio e alla fine di ogni riga in una stringa multiriga, anziché solo all'inizio e alla fine dell'intera stringa. Questo è particolarmente utile quando si lavora con testo su più righe e si ha bisogno di eseguire corrispondenze di pattern riga per riga.

Questa pagina illustra cosa cambia il flag m, come si differenzia dal comportamento predefinito degli ancoraggi, come si combina con i flag g e i, e i pattern pratici per l'analisi di testo orientato alle righe, come i log.

Comportamento predefinito vs. modalità multiriga

Per impostazione predefinita (senza m), ^ corrisponde solo all'inizio dell'intera stringa e $ solo alla fine. Un'interruzione di riga (\n) all'interno della stringa è semplicemente un carattere ordinario — non crea nuove posizioni di ancoraggio.

Con il flag m, ^ corrisponde anche alla posizione immediatamente dopo ogni \n, e $ corrisponde anche alla posizione immediatamente prima di ogni \n (oltre all'inizio/fine effettivi della stringa). La corrispondenza non include mai il carattere di nuova riga — gli ancoraggi sono posizioni a larghezza zero.

javascript— editable

Senza m, solo l'abc all'inizio della stringa è ancorato da ^. Aggiungendo m, ^ può corrispondere anche dopo l'interruzione di riga, trovando entrambe le righe abc. (Il flag g è quello che raccoglie tutte le corrispondenze invece di fermarsi alla prima.)

Il flag m: abilitare la modalità multiriga

Quando si usa il flag m, gli ancoraggi ^ e $ corrispondono alle posizioni prima e dopo le interruzioni di riga all'interno della stringa.

Utilizzo del flag m

javascript— editable

In questo esempio, la regex ^abc corrisponde all'inizio di ogni riga che inizia con "abc" grazie al flag m. Il flag g assicura che vengano trovate tutte le occorrenze. Senza il flag m, corrisponderebbe solo ad "abc" all'inizio della stringa.

Esempio: Corrispondenza su più righe

javascript— editable

Qui, la regex ^start corrisponde all'inizio delle righe che cominciano con "start" grazie alla combinazione dei flag m e g.

Applicazioni pratiche

Corrispondenza di righe in testo multiriga

Il flag m è particolarmente utile per trovare pattern specifici all'inizio o alla fine di ogni riga in una stringa multiriga.

javascript— editable

Questo esempio mostra come ^hello con il flag m trovi "hello" all'inizio di ogni riga.

Corrispondenza della fine delle righe in testo multiriga

Allo stesso modo, puoi usare il flag m per trovare pattern alla fine di ogni riga.

javascript— editable

Qui, world$ con il flag m trova "world" alla fine di ogni riga.

Esempio: Estrazione di righe specifiche

javascript— editable

Questo esempio mostra come estrarre tutte le righe che iniziano con "Error:" da un file di log usando il flag m.

Combinazione di flag

Puoi combinare il flag m con altri flag per potenziare le tue espressioni regolari. Ad esempio, combinare il flag m con il flag i (case-insensitive) consente di eseguire corrispondenze multiriga senza distinzione tra maiuscole e minuscole.

Esempio: Corrispondenza multiriga senza distinzione tra maiuscole e minuscole

javascript— editable

In questo esempio, la regex trova le righe contenenti "hello" indipendentemente dalla maiuscola o minuscola, grazie alla combinazione dei flag m e i.

  • Il pattern regex ^.*hello.*$ corrisponde a qualsiasi riga che contenga "hello" indipendentemente dalla maiuscola o minuscola.
  • Il flag m assicura che ogni riga nella stringa multiriga venga trattata individualmente.
  • Hello world, hello world e HELLO WORLD corrispondono tutti al pattern perché contengono "hello" (senza distinzione tra maiuscole e minuscole) da qualche parte nella riga.
Informazione

Usa il flag m nelle regex JavaScript per applicare gli ancoraggi ^ e $ a ogni riga in una stringa multiriga, migliorando la capacità di validare e manipolare contenuti riga per riga.

Usare il flag m per la validazione riga per riga

Il flag m è ideale per gli scenari in cui è necessario validare o manipolare ogni riga individualmente all'interno di una stringa multiriga.

Esempio: Validazione di un numero di telefono statunitense

javascript— editable

Questa regex verifica che il numero di telefono sia nel formato (123) 456-7890. Usa ^ per indicare l'inizio e $ per indicare la fine, assicurando che l'intera riga corrisponda al pattern specificato.

Pertanto, sia "(123) 456-7890" che "(234) 567-8901" corrispondono al pattern regex perché seguono il formato (xxx) xxx-xxxx, che la regex è progettata per riconoscere.

Errori comuni

  • m influisce solo su ^ e $, non su . — Il punto continua a non corrispondere a una nuova riga. Se hai bisogno che . attraversi le interruzioni di riga, usa il flag separato s (dotAll). Il flag m cambia dove le righe iniziano e finiscono; il flag s cambia ciò che . corrisponde.
  • m non equivale alla corrispondenza di parole intere. Per trovare corrispondenze ai bordi di una parola anziché di una riga, usa il \b confine di parola invece di ^/$.
  • Senza g, match() restituisce solo il primo risultato. Il flag m abilita posizioni di ancoraggio aggiuntive, ma hai ancora bisogno di g per raccogliere ogni riga. Combinali come gm.
javascript— editable

Conclusione

Il flag m nelle espressioni regolari JavaScript estende la funzionalità degli ancoraggi ^ e $ per corrispondere all'inizio e alla fine di ogni riga in una stringa multiriga. Questa capacità è preziosa per elaborare dati di testo su più righe, consentendo corrispondenze e validazioni precise riga per riga.

Pratica

Pratica
Qual è la funzione del flag 'm' nelle espressioni regolari JavaScript?
Qual è la funzione del flag 'm' nelle espressioni regolari JavaScript?
Was this page helpful?