Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: FranStoker en 25 de Julio 2016, 15:38

Título: Javascript expresiones regulares ejemplo significado punto interrogante CU01154E
Publicado por: FranStoker en 25 de Julio 2016, 15:38
Hola a todos.

En esta parte de vuestro curso Javascript desde cero, entrega CU01154E, explicáis las expresiones regulares.

Decís que:

Citar
Para introducir el concepto de símbolo especial y expresión regular vamos a usar primeramente sólo dos caracteres especiales: el carácter “punto” . , que es un simple punto, y el carácter ?

Y luego, a modo de ejemplo, usais la siguiente expresión:

Citar
En forma de literal: var miExpresionRegular = /as?.a/ representa a todas las cadenas que contienen una subcadena con la primera letra de la subcadena una a, seguida de una s, opcionalmente seguida de cualquier letra, y seguida de una a.

Bien, tengo unas dudas:

-En primer lugar, qué quiere decir "en forma de literal"?

-Después, no comprendo cómo ?. equivale a "opcionalmente seguida de cualquier letra". ¿No era un simple punto y ya está?

-Un poco más adelante, además, como ejemplo de cadena válida o no válida según el patrón, tenemos que:

Citar
Una cadena como “castaño” contiene el patrón: c-a-s-t-a-ñ-o contiene el patrón, siendo el carácter opcional la letra t.

Pero después decís:

Citar
Cadenas como “sabina”, “casualidad” ó “as” no contienen el patrón.

"casualidad" no cumple el patrón igual que lo hace "castaño"? Es una a, una s, una letra aleatoria, y una a...

La última duda que tengo: las reglas para las expresiones regulares en JS son las mismas que se usa en las restricciones para XML? Por ejemplo:

Código: [Seleccionar]
<xs:restriction base="xs:string">
      <xs:pattern value="[A-Z][A-Z][A-Z]"/>
   </xs:restriction>

Muchas gracias y un saludo a todos.

Título: Re: (CU01154E) Javascript- No entiendo la siguiente expresión regular.
Publicado por: FranStoker en 25 de Julio 2016, 22:00
Como no puedo editar, decir que una de mis dudas (el significado del punto), ya está solucionada.
Título: Re:Javascript expresiones regulares ejemplo significado punto interrogante CU01154E
Publicado por: César Krall en 02 de Agosto 2016, 18:48
Hola!

Citar
-En primer lugar, qué quiere decir "en forma de literal"?

Esto simplemente se refiere a cómo se ha definido la expresión regular. En la entrega se indica:

Citar
JavaScript permite crear expresiones regulares de dos maneras:

a) En forma de literal: var miExpresionRegular = /as?.a/ representa a todas las cadenas que contienen una subcadena con la primera letra de la subcadena una a, seguida de una s, opcionalmente seguida de cualquier letra, y seguida de una a.

b) Instanciando el objeto RegExp: var miExpresionRegular = new RegExp("as?.a") representa lo mismo.

Cuando escribes una expresión regular dentro de / ... / decimos que estamos usando una expresión regular en forma de literal, es solo una cuestión de terminología.


Citar
-Después, no comprendo cómo ?. equivale a "opcionalmente seguida de cualquier letra". ¿No era un simple punto y ya está?

En la entrega se explica que el símbolo punto indica existencia de cualquier carácter. Por ejemplo la expresión regular /ca.e/ concuerda con cate y con  cafe pero no con catte ni con caffe ni con cae

El símbolo interrogación indica opcionalidad: el carácter que lo precede puede aparecer 0 ó 1 vez en la subcadena. Por ejemplo la expresión regular /ca?e/ concuerda con cae y con ce, porque permite que haya un carácter a o ninguno. No concuerda con catte ni con caffe ni con came.


Citar
-Un poco más adelante, además, como ejemplo de cadena válida o no válida según el patrón var miExpresionRegular = /as?.a/

Aquí el patrón implica que la cadena ha de contener una a, seguida opcionalmente de una s, seguida de cualquier carácter, y luego seguida de otra a.

castaño cumple porque hay una a seguida de una s, seguida de una t (que es cualquier caracter) y luego seguida de una a.

casualidad sí cumple porque hay una a seguida de una s seguida de una u (que es cualquier carácter) y luego seguida de una a. Por tanto tienes razón al plantear esa duda: ahí hay un pequeño error en el curso (que vamos a corregir, gracias por indicarlo).

Esto podemos comprobarlo añadiendo msg = msg + '¿Contiene casualidad el patrón? : '+ miExpReg.test('casualidad') +'\n'; al código del curso, vemos que nos devuelve true.


Citar
La última duda que tengo: las reglas para las expresiones regulares en JS son las mismas que se usa en las restricciones para XML?

Entre distintos lenguajes puede haber similitudes en la forma de crear expresiones regulares. En algunos casos pueden coincidir, pero en otras no. Por eso siempre que vayamos a usar expresiones regulares debemos consultar la especificación de expresiones regulares para ese lenguaje.

Saludos!
Título: Re:Javascript expresiones regulares ejemplo significado punto interrogante CU01154E
Publicado por: Reinier Garcia en 12 de Octubre 2016, 05:08
Lo que sucede es que está mal redactada la explicación y mal interpretada la expresión regular:

En vez de decir:

Citar
a) En forma de literal: var miExpresionRegular = /as?.a/ representa a todas las cadenas que contienen una subcadena con la primera letra de la subcadena una a, seguida de una s, opcionalmente seguida de cualquier letra y seguida de una a.

Debió decir:

Citar
a) En forma de literal: var miExpresionRegular = /as?.a/ representa a todas las cadenas que contienen una subcadena con la primera letra de la subcadena una a, seguida de una s opcional, seguida de un caracter cualquiera y seguida de una a.