2010-01-27 5 views
12

Bonjour J'ai créé un schéma pour vérifier l'ID de messagerie. qui peut valider si l'adresse email est [email protected] et [email protected] et [email protected] Mais je veux valider seulement [email protected] et [email protected] parce que je pense email peut avoir 2 points au maximum après le symbole @ de sorte que le troisième sera e-mail valide id alors, comment valider un identifiant de messagerie en utilisant le schéma ci-dessous est le schémaComment valider un ID de messagerie dans le schéma xml

<xsd:element name="SSEM" minOccurs="0"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="CNT" minOccurs="0" maxOccurs="unbounded"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="EM" minOccurs="1" nillable="true" type ="singleEmailID"/> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

Merci Sunil Kumar Sahoo

+1

'parce que je pense email peut avoir 2 points au maximum après @ symbol'. Peut-être lire les RFC pertinentes au lieu de deviner et d'échouer arbitrairement la validation? 'abc @ 10.0.0.0' est aussi un e-mail parfaitement valide. http://davidcel.is/posts/stop-validating-email-addresses-with-regex/ –

Répondre

29

Vous devrez définir un modèle pour faire correspondre les courriels valides. Les motifs sont définis en utilisant une syntaxe d'expression régulière. Une fois que vous avez défini un type simple (basé sur xs:string) avec le modèle approprié, vous pouvez l'utiliser pour votre type d'e-mail.

Il existe plusieurs endroits sur Internet qui fournissent des exemples de tels types et modèles. Un exemple d'un type d'e-mail est fourni here.

L'exemple donné, il se présente comme suit (je l'ai modifié légèrement pour rendre les choses un peu plus clair):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 

    <xsd:element name="A" type="emailAddress"/> 

    <xsd:simpleType name="emailAddress"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:pattern value="[^@][email protected][^\.]+\..+"/> 
    </xsd:restriction> 
    </xsd:simpleType> 
</xsd:schema> 
+0

Si vous voulez seulement def.com et def.co.in vous devriez jouer avec cette expression un peu. –

+0

Oui, très certainement. –

6

Vous pouvez utiliser un <xs:simpleType> basé sur une chaîne et avec un motif de regex pour valider votre adresses e-mail:

<xsd:simpleType name="emailAddress"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:pattern value="([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})"/> 
    </xsd:restriction> 
</xsd:simpleType> 

Utilisez une regex e-mail que vous aimez :-), voir quelques exemples sur RegexLib.Net.

Ensuite, utilisez ce type dans votre schéma XML de base:

<xsd:element name="email" type="emailAddress" /> 

pourrait par vérifier par ligne validateur: https://www.corefiling.com/opensource/schemaValidate.html

+6

Contrairement à d'autres bibliothèques RegEx, les schémas XML Schema ne commencent pas par^et se terminent par un $. Ceci est implicite dans les chaînes atomiques. –

1

Utilisez le validateur de schéma ci-dessous pour la validation email id

<xsd:simpleType name="emailAddress"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/> 
    </xsd:restriction> 
</xsd:simpleType> 
0

Utilisez ce validateur pour la validation par e-mail avec apostrophe également:

<xsd:simpleType name="emailAddress"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:pattern value="^([0-9a-zA-Z_\.\'\-]+)*@[0-9a-zA-Z\-]+[a-zA-Z\.]+Dollar symbol"/> 
    </xsd:restriction> 
</xsd:simpleType> 

Il fonctionnera comme la validation électronique avec :-) apostrophe

Questions connexes