2010-01-27 50 views
12

Hola, he creado un esquema para verificar el ID del correo electrónico. que puede validar si el ID del correo electrónico es [email protected] y [email protected] y [email protected] Pero solo quiero validar [email protected] y [email protected] en porque creo que el correo electrónico puede tener un máximo de 2 puntos después de @ símbolo por lo que la tercera será inválida correo electrónico de identificación Entonces, ¿cómo validar un correo electrónico de identificación utilizando el esquema a continuación es el esquemaCómo validar un ID de correo electrónico en el esquema 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> 

Gracias Sunil Kumar Sahoo

+1

'porque creo que el correo electrónico puede tener un máximo de 2 puntos después de @ symbol'. Tal vez lea los RFC relevantes en lugar de adivinar y fallar arbitrariamente la validación. 'abc @ 10.0.0.0' es un correo electrónico perfectamente válido también. http://davidcel.is/posts/stop-validating-email-addresses-with-regex/ –

Respuesta

29

Deberá definir un patrón para que coincida con los correos electrónicos válidos. Los patrones se definen usando la sintaxis de expresiones regulares. Una vez que haya definido un tipo simple (basado en xs:string) con el patrón apropiado, puede usarlo para su tipo de correo electrónico.

Hay varios lugares en Internet que ofrecen algunos ejemplos de tales tipos y patrones. Se proporciona un ejemplo de tipo de correo electrónico here.

el ejemplo dado no es de la siguiente manera (que he editado un poco para hacer las cosas un poco más claras):

<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 solo quieres def.com y def.co.in, deberías jugar con esta expresión un poco. –

+0

Sí, definitivamente. –

6

Se puede usar un <xs:simpleType> basado en una cadena y con un patrón de expresión regular para validar su direcciones de correo electrónico:

<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> 

uso cualquier correo electrónico de expresiones regulares te gusta :-), ver algunas muestras de RegexLib.Net.

A continuación, utilice ese tipo en el esquema XML básico:

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

Podría ser chequeado por el selector de línea: https://www.corefiling.com/opensource/schemaValidate.html

+6

A diferencia de otras bibliotecas RegEx, los patrones de esquemas XML no comienzan con^y finalizan con $. Esto está implícito en cadenas atómicas. –

1

uso del validador de esquema a continuación para la validación de correo electrónico de identificación

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

Utilice este validador para la validación de correo electrónico con un apóstrofo también:

<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> 

Funcionará como la validación de correo electrónico con apóstrofe :-)

Cuestiones relacionadas