Per verificare che un nome inglese di input dell'utente sia valido, di solito corrispondere l'input all'espressione regolare, ad esempio [A-Za-z]. Ma come posso farlo se è richiesto il supporto multilingua (come il cinese, il giapponese, ecc.) Con la codifica utf8?Convalida dell'ingresso multilingue con codifica UTF-8
risposta
È possibile approssimare la proprietà Unicode derivata \p{Alphabetic}
piuttosto succintamente con [\pL\pM\p{Nl}]
se la lingua doensn't supporta una corretta Alfabetico proprietà direttamente.
Non utilizzare Java \p{Alpha}
, perché that’s ASCII-only.
Ma poi si noterà che hai fallito per tenere conto di trattini (\p{Pd}
o DashPunctuation opere, ma ciò non comprendono la maggior parte dei trattini!), Apostrofi (di solito ma non sempre una delle U +27, U + 2BC, U + 2019 o U + FF07), virgola o punto/punto completo.
Probabilmente è meglio includere \p{Pc}
ConnectorPunctuation, per ogni evenienza.
Se si dispone della proprietà derivata Unicode \p{Diacritic}
, è consigliabile utilizzarla anche perché include elementi come il punto centrale necessario per L'gemello in catalano e le forme non combinabili di segni diacritici che le persone talvolta utilizzano.
Ma allora troverete persone che usano i numeri ordinali nei loro nomi in modi che \p{Nl}
(LetterNumber) non significa accogliere, in modo da gettare \p{Nd}
(DecimalNumber) o anche tutti \pN
(Numero) nel mix.
poi ti rendi conto che i nomi asiatici spesso richiedono l'uso di ZWJ o zwnj da scrivere in modo corretto nei loro script, così poi si deve aggiungere U + 200D e U + 200C al mix, che sono entrambi \p{Cf}
(Format) caratteri e infatti anche JoinControl uni.
Con il tempo il gioco è fatto looking up the various Unicode properties per i vari e tanti personaggi esotici che mantengono a saltar fuori - o quando si pensa il gioco è fatto, invece - si è quasi certo di concludere che si farebbe un gran un lavoro migliore in questo caso se si consente semplicemente loro di utilizzare qualsiasi carattere Unicode per il loro nome che desiderano, come consiglia the link Tim cites.Sì, avrai alcuni jolly che metteranno cose come "əɯɐuʇƨɐ⅂ əɯɐuʇƨɹᴉℲ", ma questo va solo con il territorio, e non puoi escludere nomi sciocchi in alcun modo ragionevole.
Non so cosa mi piace di più di questa risposta in più: il fatto che in realtà risponda alla domanda, il fatto che potenzialmente insegni molto sulle espressioni regolari unicode in generale, o sul fatto che dimostra succintamente perché provare a convalidare i nomi reali è una cattiva idea. –
Pensa se è davvero necessario convalidare il nome dell'utente. Forse dovresti permettere agli utenti di chiamarsi come vogliono.
Non si dovrebbe mai usare [A-Za-z]
, perché alcune persone hanno nomi con apostrofi o trattini. Può essere piuttosto offensivo impedire a qualcuno di usare il loro vero nome solo perché non segue le regole arbitrarie per come dovrebbe apparire un nome.
In PHP Io uso questo brutto trucco: (. E, I, ecc)
setlocale(LC_ALL, 'de_DE');
preg_match('/^[[:alpha:]]+$/', $name);
che include "dieresi" (vale a dire 'a', 'O' e simili) più le vocali accentate. Ma a corto di convalidare per cirillico (Russia, Bulgaria, ...) o caratteri cinesi ...
- 1. codifica knitr e UTF8
- 2. Codifica UTF8 Java
- 3. Codifica database multilingue nel motore di ricerca
- 4. Decodifica utf8 con doppia codifica in Python
- 5. Codifica UTF8 con vCard in Windows
- 6. text to pdf con codifica utf8 (alternativa a a2ps)
- 7. Come leggere il file con codifica UTF8 utilizzando RandomAccessFile?
- 8. Rails: problemi di codifica con gli hash serializzati nonostante UTF8
- 9. Come modificare la codifica della connessione dplyr :: tbl su utf8?
- 10. java utf8 codifica - char, i tipi di stringa
- 11. primefaces fileupload filtro con filtro utf8 caratteri
- 12. ant: avviso: carattere non impostabile per la codifica UTF8
- 13. La codifica UTF8 non funziona quando si usa ajax
- 14. bug Java? Perché extra zero byte nella codifica utf8?
- 15. Rubino CSV UTF8 Errore di codifica durante la lettura
- 16. Differenza tra codifica utf-8 e utf8 in Python 3.5
- 17. UTF8 Decodifica con NSString
- 18. Compilare (javac) un codice sorgente Java con codifica UTF8 con una BOM
- 19. Drupal multilingue
- 20. Come knit2html con codifica UTF-8?
- 21. Modulo di codifica e post-convalida
- 22. modulo php invia utf8?
- 23. Ricerca FULLTEXT con una colonna multilingue
- 24. Disegno di testo multilingue con PIL
- 25. Sito Web multilingue
- 26. Documentazione Sdk Android multilingue
- 27. Come memorizzare dati multilingue?
- 28. Come creare JavaDocs multilingue?
- 29. Supporto multilingue personalizzato
- 30. Python supporta unicode oltre il piano multilingue multilingue?
Quale implementazione di linguaggio/espressione regolare utilizzate? – Gumbo
Supporta idealmente tutte le lingue, è possibile? – Hongbo
Penso che Gumbo significhi "quale linguaggio di programmazione stai usando?" –