Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mr Crowley

passar parametros para uma Expressao Regular, é possivel?

Recommended Posts

Ola pessoal

tenho uma expressao regular como este exemplo abaixo

 

ExprReg = /(^([A-Za-z.\s]){1,50})+$/;

porem, em alguns casos eu tenho que permitir mais de 200 caracteres,porem, eu nao consegui criar uma maneira de concatenar e montar uma expressao regular

 

ja tentei

 

var ExpreTemp = "/(^([A-Za-z.\s]){1,50})+$/";ExprReg = ExpreTemp;

 

var ExpreTemp = "/(^([A-Za-z.\s]){1,50})+$/;";ExprReg = ExpreTemp;

e das duas formas retorna erro

 

obs.: antes que alguem fale de criar um IF, fica um tanto qto complicado, eu ja tenho isso radando na funcao, porem, se eu tiver que criar as mesmas expressoes regulares novamente e alterar o numero de caracteres, a funcao vai ficar enorme, por isso de querer saber se existe um meio mais facil de fazer isso!

 

acho que é so

t+

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

A quantidade de caracteres de uma expressão regular é definida entre CHAVES "{}":

 

/(^([A-Za-z.\s]){1,50})+$/;

 

Para aceitar + de 200 ocorrências dessa expressão ficaria assim:

 

/(^([A-Za-z.\s]){200})+$/;

 

Qq dúvida da uma olha nesse ARTIGO do Thiago Prado, é uma ótima referência sobre Expressões Regulares.

 

OK..!!?? T+...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A quantidade de caracteres de uma expressão regular é definida entre CHAVES "{}":

 

/(^([A-Za-z.\s]){1,50})+$/;

 

Para aceitar + de 200 ocorrências dessa expressão ficaria assim:

 

/(^([A-Za-z.\s]){200})+$/;

 

Qq dúvida da uma olha nesse ARTIGO do Thiago Prado, é uma ótima referência sobre Expressões Regulares.

 

OK..!!?? T+...

sim, porem o que eu queria saber é, se é possivel montar isso atraves de parametros

por exemplo

var tamMax = 100;expreReg = /(^([A-Za-z.\s]){+tamMax+})+$/;
OBS.: sei que isso nao funciona!

 

se nao tiver como montar por paramentros, vou ter que criar varias expressoes regulares

 

da uma olhada nessa funcao

function ValidCampoExpreReg(Campo,Nome,ExprRegTip){	var Valor = document.getElementById(Campo).value;	if (Valor == "")//VERIFICO SE O CAMPO FOI PREENCHIDO,	{		return true;//SE O CAMPO NAO FOI PREENCHIDO, ENTAO EU SAIO DA FUNCAO, POIS "" NAO É VÁLIDO 	}		var ExprReg =  /^\d+$/;//EXPRESAO REGULAR PARA VALIDAR INTEIROS	if (ExprReg.test(ExprRegTip) == false)//VERIFICO SE 'ExprRegTip' É UM INTEIRO	{		alert('Nenhuma Tipo de Expressão Regular Valida fornecida');		return false;	}	var ErrMsg 	= '';//VARIAVEL QUE RECEBE O RETORNO DE ERRO DA EXPRESSAO REGULAR	ExprReg 	= '';//VARIAVEL QUE RECEBE A EXPRESSAO REGULAR	if (ExprRegTip == 1){ExprReg = /(^([A-Za-z.\s]){1,50})+$/;			ErrMsg = 'letras';}//EXPRESSAO REGULAR QUE PERMITE '.' E LETRAS	if (ExprRegTip == 2){ExprReg = /(^([A-Za-z0-9.\s]){1,50})+$/;		ErrMsg = 'letras e números';}//EXPRESSAO REGULAR QUE PERMITE '.',LETRAS E NUMEROS	if (ExprRegTip == 3){ExprReg = /(^([A-Za-zá-úÁ=Ú.\s]){1,50})+$/;	ErrMsg = 'letras e acentuação';}//EXPRESSAO REGULAR QUE PERMITE '.',LETRAS E ACENTOS	if (ExprRegTip == 4){ExprReg = /(^([A-Za-zá-úÁ-Ú0-9.\s]){1,50})+$/;	ErrMsg = 'letras,acentuação e números';}//EXPRESSAO REGULAR QUE PERMITE '.',LETRAS,ACENTOS E NUMEROS	if (ExprRegTip == 5){ExprReg = /(^([0-9\s]){1,50})+$/;				ErrMsg = 'números';}//EXPRESSAO REGULAR QUE PERMITE NUMEROS		if (ExprReg == '')	{		alert('Nenhuma Tipo de Expressão Regular conhecida fornecida');		return false;	}		if (ExprReg.test(Valor) == false)	{		alert('O campo ' + Nome + ' só aceita ' + ErrMsg + '.');//MENSAGEM DE ERRO PARA O CLIENTE		document.getElementById(Campo).className = "FormCampoErr";//MUDO O ESTILO DO CAMPO PARA MELHOR VIZUALIZAÇÃO DO ERRO		return false;	}	return true;	}

ja tive que 1 expressao regular para cada dipo de entrada, agora se tiver que criar uma para cada tipo de quantidade, isso comeca a ficar "tosco", muito codigo repetitivo!

 

por isso de querer saber se posso concatenar as funcoes!

 

 

obrigado novamente vagner(obs, dessa vez foi com V...rs)

T+

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o comando EVAL():

<script>	var PARAMETRO = 5;	eval('var reg = /[az]{'+PARAMETRO+'}/gi');	alert(reg.test('azazazazazaz'));</script>

Dessa forma você pode criar e manipular as suas expressões como STRING's e depois executar com o EVAL().

 

OK..!!?? T+...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o comando EVAL():

<script>	var PARAMETRO = 5;	eval('var reg = /[az]{'+PARAMETRO+'}/gi');	alert(reg.test('azazazazazaz'));</script>
Dessa forma você pode criar e manipular as suas expressões como STRING's e depois executar com o EVAL().OK..!!?? T+...
vou testar amanha que agora ta corridoamanha te retorno como ficouabse obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o comando EVAL():

<script>	var PARAMETRO = 5;	eval('var reg = /[az]{'+PARAMETRO+'}/gi');	alert(reg.test('azazazazazaz'));</script>
Dessa forma você pode criar e manipular as suas expressões como STRING's e depois executar com o EVAL().OK..!!?? T+...
OBRIgado vagner.netfuncionou certinho aquiveja como ficou
function validCampoLetra(campo,nome,minLetra,maxLetra){	var valor = getIDValue(campo);	eval('var exprReg = /(^([A-Za-z\s]){'+minLetra+','+maxLetra+'})+$/;');		if (exprReg.test(valor) == false)	{		alert('O campo ' + nome + ' só aceita letras de A-Z sem acentos.');		setIDClass(campo,'FormCampoErr');		return false;	}	setIDClass(campo,'FormCampo');	return true;	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

po kra, n querendo desmerecer, mas o eval é uma saida muito pesada...

você pode montar como uma string mesmo, e depois passa-la pra classe RegExp (isso mesmo! o js tem uma "classe" regexp!!! fajuta mas tem hauheauhaeu)

 

o RegExp, na verdade n é p*** de classe nenhuma rs mas ele monta a expressao regular pra você... isso é legal qdo se precisa fazer algo mais limpo e dinamico, como o seu caso...

 

você pode fazer assim:

 

var dinamica;// ps.: é sem as barras(/) inicializadoras mesmo, e o g (parametro opcional) é o teu mapa!dinamica = new RegExp('(^([A-Za-z\s]){'+minLetra+','+maxLetra+'})+$', "g");

ai você pode usar:

alert(dinamica.test(meu_valor));

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.