Le espressioni regolari (o Regex) sono utilizzate nelle operazioni di stringhe per cercare un pattern. In JavaScript, possono essere utilizzate con i metodi di test e ricerca nella classe String, e con replace e split.
JavaScript ha un oggetto incorporato RegExp che può essere utilizzato per definire un’espressione regolare. La sintassi è la seguente:
```
let regex = new RegExp(pattern, flags);
```
oppure
```
let regex = /pattern/flags;
```
- Pattern: sarà il modello da cercare.
- Flags: sono indicatori che cambiano la ricerca. Alcuni dei flag più utilizzati sono “i” (ignora il case), “g” (ricerca globale), “m” (multilinea).
Due metodi comuni utilizzati con RegExp sono `.test()` e `.exec()`.
- `test()`: ritorna vero se l’espressione regolare trova una corrispondenza nella stringa, altrimenti falso.
- `exec()`: ritorna un array con il risultato che corrisponde, oppure null.
Esempi:
```
let regex = /js/i;
console.log(regex.test(‘JS’)); // Output: true
let regex = /js/i;
console.log(regex.exec(‘JS’)); // Output: [“JS”, index: 0, input: “JS”, groups: undefined]
```
Per utilizzare le espressioni regolari nei metodi della classe String invece:
- `match()`: cerca una corrispondenza e ritorna un array di risultati o null.
- `search()`: cerca una corrispondenza e ritorna l’indice della corrispondenza o 1. `replace()`: sostituisce il testo che corrisponde all’espressione regolare con un nuovo testo.
- `split()`: divide la stringa in un array utilizzando l’espressione regolare come separatore.
Esempi:
```
let str = ‘Hello JS!’;
console.log(str.match(/js/i)); // Output: [“JS”, index: 6, input: “Hello JS!”, groups: undefined]
let str = ‘Hello JS!’;
console.log(str.search(/js/i)); // Output: 6
let str = ‘Hello JS!’;
console.log(str.replace(/js/i, ‘JavaScript’)); // Output: Hello JavaScript!
let str = ‘apple-orange-banana’;
console.log(str.split(/-/)); // Output: [‘apple’, ‘orange’, ‘banana’]
```