Ir para conteúdo

POWERED BY:

Arquivado

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

leo_SJCampos

[Resolvido] Expressao Regular pra evitar abreviação

Recommended Posts

Como eu verifico isso no PHP e retorno o resultado via JSON criei uma função que verifica se há espaço entre a letra usando o

 

Você não precisa enviar para o PHP e retornar como JSON. Utilize Javascript:

 

String.indexOf()

 

var someString = "João Batista de Paula e Silva";
var otherString = "Maria E Oliveira"; //Minha tia chama-se Maria Elena, com E, não com H.

if ( someString.toUpperCase().indexOf( ' E ' ) >= 0 ) {
   	alert( "Esse caminho está errado!!!\n\nÉ melhor avisar ao usuário para não abreviar do que ficar tentando validar o invalidável" );
} else {
   	alert( 'OK => será?' );
}

if ( otherString.toUpperCase().indexOf( ' E ' ) >= 0 ) {
   	alert( "Esse caminho está errado!!!\n\nÉ melhor avisar ao usuário para não abreviar do que ficar tentando validar o invalidável" );
} else {
   	alert( 'OK => será?' );
}

 

Fiz isso para cada letra, e uso a expressão regular

 

/([a-zA-Z\s]+)$/ 

 

para permitir somente letras e sendo assim, proibo o uso de numeros e pontos..

 

Utilize a expressão regular no Javascript também.

 

RegExp.test()

 

if  ( /([a-zA-Z\s]+)$/.test( theString ) {
//...
}

 

mas a principio deu certo..

 

Não deu certo, você apenas não viu o problema ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que eu quis simplificar grande João Batista Neto hehe...

 

na View eu uso EXTJS, então eu uso a Expressão regular no proprio atributo do objeto, e a expressão que eu coloquei no post de cima esta errada,, na verdade estou usando a que vou colocar abaixo para voces entenderem o que eu fiz...

 

Tambem tinha um erro non Json de retorno, estava sem virgula, estou corrigindo agora...

 

var nome =  new Ext.form.TextField({
            fieldLabel: 'Nome',
	    name: 'nome',
	    allowBlank: false,
	    width: 280,
	    maskRe:/([a-zA-Z0-9\s]+)$/ 
});

nome.on({
'blur': function(field){
   		Ext.Ajax.request({
		url:'../teste/teste.php',
		params: {
			nome: nome.getValue()
	        },
	success:function(response){
		var json = Ext.decode(response.responseText);
		if(json.result == 0){
			Ext.Msg.show({ title:'ERRO', msg:json.message, buttons:Ext.Msg.OK, icon:Ext.MessageBox.ERROR, scope:this, width:250});
		}
	}
});  

 

e no PHP

 

$nome = strtoupper($_REQUEST['nome']);


if( strstr($nome," A ")){
	echo "{result:0, message:'NOME NAO PODE SER ABREVIADO'}";
}


if( strstr($nome," B ")){
	echo "{result:0, message:'NOME NAO PODE SER ABREVIADO'}";
}
....

 

 

Aqui pra mim deu certo....

 

OBS.. Não sei se tem como eu usar o toUpperCase no EXTJS. vou verificar, se tiver como, crio uma função la mesmo e não preciso fazer essa requisição para o PHP nesse momento.

 

Valeu pela força ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

que gambiarra rapaz !! ta louco testar com varios ifs, letra por letra.. insano isso!!

 

apenas a ER que sugeri resolve o problema.

esqueça os erros de digitação.

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.