Regularni izrazi, targetiranje sekvence matchinga

Pozdrav,

zanima me kako mogu targetirati određeni dio patterna… mozda najbolje da objasnim putem primjera:

	var replacer=function(match, p1, p2) 
		{
		var index=arguments[arguments.length-2];

		alert(p1); //->'trazim'
		alert(p2); //->'izraz'

		return '...';
		}
	string=string.replace(/(trazim)(?:neki)(izraz)/gi, replacer);

…ovdje je znači vrlo očito da sa argumentom p2, dohvaćam traženi dio patterna koji se nalazi u trećoj zagradi. (U trećoj, a ne u drugoj, jer druga nije indeksirana zbog "?:") …no taj (?:slight_smile: je jedini način na koji mogu barem malo si urediti naknadno dohvaćanje pojedinog matchinga…no to mi nekako nije dovoljno.

Ja bi da si mogu označiti željenu zagradu u patternu, da mogu direktno doći do nje…i da taj način dohvaćanja matchinga te zagrade se neće poremetiti naknadnim dodavanjem još zagrada u izvorni pattern.

Tipa, ako gornji pattern malo izmjenim:

string=string.replace(/(tra(zim|gam))(?:neki)(izraz)/gi, replacer);

…sad bi morao mijenjati i funkciju replacer(), jer p2 više ne odgovara trećoj zagradi.

Želja mi je imati to fiksno, kao što index matchinga mogu uvijek dohvatiti na željenoj poziciji: arguments[arguments.length-2]; ,


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey