10
votes

Comment valider le nom chinois (Unicode) et l'anglais?

J'ai un site Web multilingue (chinois et anglais).

J'aime valider un champ de texte (champ de nom) dans JavaScript. J'ai le code suivant jusqu'à présent. xxx

Le problème est, / ^ [caractères] {1,20} $ / uniquement correspond aux caractères anglais. Est-il possible de faire correspondre des caractères (y compris unicode)? J'avais l'habitude d'utiliser la regex suivante, mais je ne veux pas permettre aux espaces entre chaque caractères. xxx


4 commentaires

Qu'est-ce que vous avez l'intention de faire si un nom coréen, japonais, vietnamien ou klingon est fourni?


Quelles règles avez-vous? 1-20 caractères, pas d'espaces. Rien d'autre?


@Russell Borogove // ​​C'est aussi ma préoccupation. Je veux valider tous les Unicodes et l'anglais.


@Roberkules // Pour le moment, je veux autoriser uniquement des caractères sans espaces.


5 Réponses :


28
votes

Vous pouvez consulter JavaScript + Unicode Regex et faire des recherches pour trouver exactement lesquelles vous voulez des personnages que vous souhaitez Autoriser:

voir Quelle est la gamme complète des caractères chinois à Unicode?

Après avoir lu ces deux et un peu de recherches supplémentaires, vous devriez pouvoir trouver des valeurs appropriées pour compléter quelque chose comme: / ^ [- 'az \ u4e00- \ u9eff] {1,20} $ / i


1 commentaires

Au cas où, à savoir: allemand ÄÜÖß , français ... , espagnol Ñ ... devrait être pris en charge, le regex devrait être élargi



-1
votes
var chkName = /\s/;

function check(name) {

    document.write("<br />" + name + " is ");

    if (!chkName.test(name)) {
        document.write("okay");
    } else {
        document.write("invalid");
    }

}

check("namevaluegoeshere");

check("name value goes here");
This way you just check if there's any white space in the name.demo @ http://jsfiddle.net/roberkules/U3q5W/

0 commentaires

3
votes

Jetez un coup d'œil à Regex Unicode Blocks.

Vous pouvez utiliser ceci pour prendre soin des noms CJK.


0 commentaires

0
votes

J'ai fait du travail sur la validation des noms chinois à l'aide de XregeXP. Le code principal est xregexp ("^ (((\\ p {inkangxi_radicals} \\ p {incjk_radicals_supplent} \\ p {incjk_symbols_and_punctusy}]) \\ p {han}) {2,4} $" , "u")

voir jsfiddle.net/coas/4djhso1y


0 commentaires

2
votes

à partir de 2018, il existe une nouvelle syntaxe dans JavaScript pour correspondre à la chinoise ou à tout autre scripts non-ASCII:

const REGEX = /([A-Za-z]|\p{Script=Hani})+/gu;
// does not match accented letters though


2 commentaires

C'est Han, pas Hani


On dirait que les deux travaux, essayé en chrome. Désolé de dire que c'est faux sans vérifier. La seule différence est que "Hani" est le "nom du code", "Han" est le vrai nom de la langue. Comme "Grek" vs "grec". Je suis chinois, apparemment mon cerveau m'a dit que cela devrait être "Han", pas "Hani", ils ont forcé tous les noms de code en 4 caractères. Hausser les épaules.