Da quando ho iniziato a scrivere questa domanda, penso di aver trovato le risposte ad ogni domanda che ho avuto, ma ho pensato di postare comunque, poiché potrebbe essere utile ad altri e maggiori chiarimenti potrebbero Sii utile.Javascript non dividerà usando regex
Stavo cercando di usare un'espressione regolare con lookahead con la funzione javascript divisa. Per qualche motivo non stava dividendo la stringa anche se trova una corrispondenza quando chiamo match. Inizialmente pensavo che il problema consistesse nell'usare lookahead nella mia espressione regolare. Ecco un esempio semplificato:
non funziona:
"aaaaBaaaa".split("(?=B).");
Works:
"aaaaBaaaa".match("(?=B).");
Appare stato che nell'esempio scissione, non è stato interpretato il problema della stringa passata come espressione regolare. L'uso delle barre in avanti invece delle virgolette sembra risolvere il problema.
"aaaaBaaaa".split(/(?=B)./);
ho confermato la mia teoria con il seguente esempio cercando sciocco:
"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");
Qualcun altro sembra strano che la funzione partita presuppone un'espressione regolare, mentre la funzione split non lo fa?
Ho sempre usato la sintassi/regex/(senza virgolette) per tutto: corrispondenza, divisione, sostituzione. Non avevo capito che non dovevi farlo in alcuni casi. –
In realtà ha senso lasciare che match() assuma un'espressione regolare (quale * altro * sarebbe possibile confrontare con?) E split() assume una stringa, poiché la divisione su una stringa è probabilmente più veloce della divisione in un'espressione regolare.Solo se si passa una regex effettiva a split(), verrà eseguita la divisione più regolare delle espressioni regolari. – Tomalak