Espressione regolari max e min caratteri

Nik

Utente Attivo
15 Set 2004
92
1
8
33
Ciao a tutti, sto utilizzando uno script trovato in rete che attraverso una validazione in ajax ed un invio dati in php, permette all'utente di inviarmi un messaggio/email.

All'interno dello script trovo questa espressione regolare:

Codice:
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

che mi permette di controllare se l'email inserita nel form è scritta correttamente oppure no. Adesso però ho la necessità di scrivere altre due espressioni regolari.

1) Il campo nome deve avere almeno 3 caratteri.
2) Il campo messaggio non può avere più di 400 caratteri.

Non essendo assolutamente pratica di espressioni regolari, prima di tutto mi chiedo.. E' possibile concepire quelle regole? Come?

Ringrazio infinitamente chiunque abbia la pazienza di aiutarmi. Ho già provato a leggere qualche guida e manuali di riferimento, ma non riesco a trovare la regola adatta.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Per controlli così semplici, cioè solo sulla lunghezza di una stringa, potresti usare la funzione strlen() che restituisce proprio la lunghezza di una stringa.
Per esempio:
PHP:
$lunghezza=strlen($stringa);
if($lunghezza<3) 
    echo "devi inserire almeno 3 lettere";
Nel caso 2:
PHP:
$lunghezza=strlen($stringa);
if($lunghezza>400) 
    echo "non puoi inserire più di 400 caratteri";
 

Nik

Utente Attivo
15 Set 2004
92
1
8
33
Grazie mille per la risposta, hai ragione. Purtroppo mi sono accorta di aver sbagliato la categoria della mia discussione.. perchè di fatto l'espressione regolare mi servirebbe in javascript.

C'è modo di spostare la mia discussione?
 

Nik

Utente Attivo
15 Set 2004
92
1
8
33
Questo è l'intero script che mi permette di controllare il contenuto dei campi del form:

Codice:
<script>
$(document).ready(function() { 
	 $('#Send').click(function() {  
			// validazione nominativo
			var nominativoReg = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/;
			var nominativoVal = $("#nominativo").val();
			
			if(nominativoVal == '') {
			$("#nominativo_error").html('');
			$("#nominativo").after('<span class="error" id="nominativo_error">Per favore, inserisci il tuo nome.</span>');
				return false
			}
			else if(!nominativoReg.test(nominativoVal)) {
				$("#nominativo_error").html('');
				$("#nominativo").after('<span class="error" id="nominativo_error">Nominativo errato</span>');
				return false
			 
			}
			else
			{
				$("#nominativo_error").html('');
			}
			
			/// validazione email
			var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
			var emailaddressVal = $("#email").val();
			
			if(emailaddressVal == '') {
				$("#email_error").html('');
				$("#email").after('<span class="error" id="email_error">Per favore, inserisci la tua e-mail.</span>');
				return false
			}
			else if(!emailReg.test(emailaddressVal)) {
				$("#email_error").html('');
				$("#email").after('<span class="error" id="email_error">Inserisci e-mail valida.</span>');
				return false
			 
			}
			else
			{
				$("#email_error").html('');
			}
			
			// validazione messaggio
			var messaggioReg = /^\w{,300}$/;
			var messaggioVal = $("#messaggio").val();
			
			if(messaggioVal == '') {
			$("#messaggio_error").html('');
			$("#messaggio").after('<span class="error" id="messaggio_error">Per favore, inserisci il tuo messaggio.</span>');
				return false
			}
			else if(!messaggioReg.test(messaggioVal)) {
				$("#messaggio_error").html('');
				$("#messaggio").after('<span class="error" id="messaggio_error">Inserisci un messaggio valido, max 300 caratteri</span>');
				return false
			 
			}
			else
			{
				$("#messaggio_error").html('');
			}
		
			$.post("InviaMessaggio.php?"+$("#MYFORM").serialize(), {
		
			}, function(response){
			
			if(response==1)
			{
				$("#after_submit").html('');
				$("#Send").after('<span class="success" id="after_submit">Messagio Inviato.</span>');
				change_captcha();
				clear_form();
			}
			else
			{
				$("#after_submit").html('');
				$("#Send").after('<span class="error" id="after_submit">Captcha errato!</span>');
			}
			
			
		});
				
		return false;
	 });
	 
	 // refresh captcha
	 $('img#refresh').click(function() {  
			change_captcha();
	 });
	 
	 function change_captcha()
	 {
	 	document.getElementById('captcha').src="js/captcha/get_captcha.php?rnd=" + Math.random();
	 }
	 
	 function clear_form()
	 {
	 	$("#nominativo").val('');
		$("#email").val('');
		$("#messaggio").val('');
	 }
});
</script>

In origine era presente solo la validazione per l'email, seguendo lo schema volevo creare quella per il nome e il messaggio.

Vorrei poter scrivere che:
1) il nome deve contenere solo lettere, minimo 3 e magari massimo 10
2) il testo può contenere qualsiasi carattere, ad esempio la punteggiatura e deve avere massimo 300 caratteri e minimo 3

Io ci provo a scriverle, ma non funzionano. L'espressione regolare per il nominativo l'avevo trovata su internet ma non funziona correttamente. Grazie a tutti per l'aiuto, davvero.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,


2) il testo può contenere qualsiasi carattere, ad esempio la punteggiatura e deve avere massimo 300 caratteri e minimo 3

non c'è un match che ingloba tutti i caratteri, definisci quali, perché andranno inseriti uno a uno nella regexp.


Per il nome se solo lettere da A - Z maiuscole e minuscole


Codice:
var nominativoReg = /^([a-zA-Z]{3,10})$/;


Valeria.
 

Nik

Utente Attivo
15 Set 2004
92
1
8
33
non c'è un match che ingloba tutti i caratteri, definisci quali, perché andranno inseriti uno a uno nella regexp.


Per il nome se solo lettere da A - Z maiuscole e minuscole


Codice:
var nominativoReg = /^([a-zA-Z]{3,10})$/;

Grazie per la risposta Valeria! Quindi ad esempio per il testo potrei cominciare a scrivere così?

Codice:
var messaggioReg = /^([a-zA-Z]+[0-9]{3,300})$/;

è giusta la mia sintassi? non ho proprio idea di come scriverlo, oppure aggiungere i vari caratteri consentiti, ad esempio .,:;?! e le lettere accentate

Dove potrei trovare una buona guida che mi permetta di capire come assemblare il tutto? Grazie per la pazienza
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Grazie per la risposta Valeria! Quindi ad esempio per il testo potrei cominciare a scrivere così?

Codice:
var messaggioReg = /^([a-zA-Z]+[0-9]{3,300})$/;

è giusta la mia sintassi? non ho proprio idea di come scriverlo, oppure aggiungere i vari caratteri consentiti, ad esempio .,:;?! e le lettere accentate

Dove potrei trovare una buona guida che mi permetta di capire come assemblare il tutto? Grazie per la pazienza


Ciao,

la regexp come è scritta /^([a-zA-Z]+[0-9]{3,300})$/;

obbligatoria una lettera come primo carattere ma il quantificarore minimo 3 massimo 300 {3,300} vale solo per i numeri, quindi a111 è corretta, come a e 299 numeri.

Il segno + concatena [] con [] due blocchi di tipo String.

Basta un solo blocco per scrivere caratteri alfanumerici e numeri.

Codice:
/^([a-zA-Z0-9]{3,300})$/

vuoi aggiungere . , : ; ? ! e i caratteri accentati?

Valeria.
 

Nik

Utente Attivo
15 Set 2004
92
1
8
33
Grazie mille Valeria.. Si, vorrei aggiungere anche i segni di punteggiature e le lettere accentate. Servirà per il controllo di una textarea nella quale l'utente compone un breve messaggio (max di 300 caratteri), quindi può utilizzare lettere, numeri, lettere accentate e segni di punteggiatura.

Grazie infinite per il tuo aiuto, lo apprezzo moltissimo :byebye:
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,


Codice:
var messaggioReg = /^([a-zA-Z0-9\u00C0-\u017F\.\,\:\;\?\!]{3,300})$/;

se vuoi aggiungere anche spazi fra le frasi o lettere:

Codice:
var messaggioReg = /^([a-zA-Z0-9\u00C0-\u017F\.\,\:\;\?\!\s]{3,300})$/;


Valeria.
 

Nik

Utente Attivo
15 Set 2004
92
1
8
33
Grazie Valeria! Non so davvero come ringraziarti :) Proverò subito il codice che mi hai fornito.. Suppongo che
Codice:
\s
serva per concedere gli spazi tra le parole..

Posso chiederti invece a cosa servono
Codice:
\u00C0-\u017F
?? Sono le lettere accentate?

:byebye:
 
Discussioni simili
Autore Titolo Forum Risposte Data
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
JackIlPazzo Espressione regolare per effettuare match con URI PHP 1
D Select con espressione regolare PHP 4
M Valutazione espressione postfissa C/C++ 0
C L'espressione regolare non funziona Javascript 0
A Creare una classe espressione Java 1
I espressione regolare Javascript 1
J espressione regolare PHP 2
F espressione regolare per valore null PHP 8
D Espressione regolare e redirect Apache 0
S Password espressione regolare PHP 3
A Espressione Regolare per verifica stringa PHP 14
S Espressione Regolare PHP 7
A Espressione regolare per verifica password PHP 3
D Scrivere un'espressione condizionale in Access Visual Basic 0
L espressione aritmetica PHP 5
emanuelevt espressione regolare PHP 9
JellyBelly Espressione Regolare per controllo Orario Javascript 2
borgo italia espressione regolare con numeri PHP 2
borgo italia espressione regolare PHP 4
Z Espressione regolare PHP 1
M Espressione regolare con eregi PHP 1
F espressione regolare e IE 6 Javascript 4
P htaccess ed espressioni regolari Apache 0
M espressioni regolari mysql (o in generale) PHP 1
Jonn Espressioni regolari su Dreamweaver Windows e Software 4
Marco_88 Espressioni regolari Javascript 0
F espressioni regolari PHP 2
otto9due Redirect 301 con espressioni regolari piccolo aiutino Apache 3
M sostituire parte di URL con espressioni regolari PHP PHP 8
L Espressioni regolari: funzionano con i caratteri cinesi? PHP 0
S Espressioni regolari PHP 2
Sevenjeak [Java] aiuto espressioni regolari, con caratteri speciali Java 2
M Perl, espressioni regolari e new line Programmazione 2
helpdesk formail con espressioni regolari PHP 15
L Espressioni regolari! PHP 4
A Le espressioni regolari: queste sconosciute! PHP 7
8 Espressioni regolari PHP 0
S Espressioni regolari (apostrofo, accenti) PHP 3
borgo italia espressioni regolari Javascript 2
mau72 Espressioni regolari PHP 4
borgo italia ancora sulle espressioni regolari PHP 5
P espressioni regolari Javascript 0
A espressioni regolari PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
L estrarre valori max tra più tabelle MySQL 2
L Estrazione valori max su più campi MySQL 4
R E-commerce max quantità prodotti PHP 1
M Estrarre valori MAX da un db con una left join MySQL 8

Discussioni simili