Foros del Web » Programando para Internet » Javascript »

Jquery Expresion Regular (facilita)

Estas en el tema de Jquery Expresion Regular (facilita) en el foro de Javascript en Foros del Web. Hola, Porque esta expresión regular es siempre falsa??? Código PHP: var  rut  =  "1234567-8" ; if ( rut . length == 9 ){                 var  patron  = new  ...
  #1 (permalink)  
Antiguo 25/07/2020, 12:38
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 698
Antigüedad: 18 años, 7 meses
Puntos: 8
Pregunta Jquery Expresion Regular (facilita)

Hola,
Porque esta expresión regular es siempre falsa???

Código PHP:
var rut "1234567-8";

if (
rut.length==9){
                var 
patron = new RegExp('/[0-9]{7}[-]{1}[0-9kK]{1}/'); 
                
alert(patron.test(rut));
                if (
patron.test(rut)) {
                    
alert('true');
                }else{
                    
alert('false');
                }          


Última edición por pcarvajal; 25/07/2020 a las 15:07
  #2 (permalink)  
Antiguo 25/07/2020, 17:35
 
Fecha de Ingreso: abril-2006
Mensajes: 453
Antigüedad: 14 años, 3 meses
Puntos: 100
Respuesta: Jquery Expresion Regular (facilita)

Cita:
Iniciado por pcarvajal Ver Mensaje
Hola,
Porque esta expresión regular es siempre falsa???

Código PHP:
var rut "1234567-8";

if (
rut.length==9){
                var 
patron = new RegExp('/[0-9]{7}[-]{1}[0-9kK]{1}/'); 
                
alert(patron.test(rut));
                if (
patron.test(rut)) {
                    
alert('true');
                }else{
                    
alert('false');
                }          

por que tu variable rut no cumple el criterio

var rut = "1234567-8";
para que sea TRUE deberia ser

var rut = "/1234567-8/";

y creo que estas confundiendo PHP con javascript, en tema de expresiones regulares, ay pequeños cambios que debes realizar
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 25/07/2020, 18:40
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 698
Antigüedad: 18 años, 7 meses
Puntos: 8
Respuesta: Jquery Expresion Regular (facilita)

Hola tuadmin,
Te comento que lo solucioné de esta forma (vamo arando dijo la mosca )

Código PHP:
var rut "1234567-8";
var 
patron = [B]/^[0-9]{8}-[0-9k]$/i[/B];
if (
patron.test(rut)) {
         return 
true;
}else{
         return 
false;

Entiendo que la expresión regular dice (rectificame por favor si me equivoco):
"desde el principio (^) de la cadena, los primeros {8} caracteres tienen que ser números del 0 al 9 ([0-9]), luego viene un guión (-), y el caracter final puede ser cualquier número del 0 al 9 o una K [0-9k]"

Lo último no me queda muy claro $/i que es lo que hace.

Según me explicaron: "The main problem is that you used a string literal inside a RegExp constructor with regex delimiter chars included in the regex pattern"

San Google lo tradujo así: "El problema principal es que usó una cadena literal dentro de un constructor RegExp con caracteres delimitadores de expresiones regulares incluidas en el patrón de expresiones regulares."

Entendí hasta la mitad... pero asumo fué porque usaba el [-] dentro de un new RegExp. Si pudieras explicarme en forma más clara te lo agradecería, así no quedo con la duda y aprendo un poco de pasadita :)

Ah! sobre el "if", sé que hay una manera más corta para hacerlo en una sola línea, pero no se como se hace
Código PHP:
if (patron.test(rut)) {
         return 
true;
}else{
         return 
false;

Y sobre la misma me surge otra duda, si hubiera un alert("lo que sea") antes del return true, ¿tambien podría escribirse el if en una sola línea?

Cita:
creo que estas confundiendo PHP con javascript
lo que pasa es que originalmente quise borrar el post, pero FDW no me dejó hacerlo por eso edité el título y le puse "jquery".

Saludos y gracias por responder!
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #4 (permalink)  
Antiguo 25/07/2020, 19:06
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.723
Antigüedad: 12 años, 5 meses
Puntos: 1127
Respuesta: Jquery Expresion Regular (facilita)

esto
Código Javascript:
Ver original
  1. if (patron.test(rut)) {
  2.          return true;
  3. }else{
  4.          return false;
  5. }


se resume con un simple

Código Javascript:
Ver original
  1. return patron.test(rut);
  #5 (permalink)  
Antiguo 25/07/2020, 19:43
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 698
Antigüedad: 18 años, 7 meses
Puntos: 8
Respuesta: Jquery Expresion Regular (facilita)

Código PHP:
se resume con un simple

return patron.test(rut); 
y como preguntas por el resultado?? lo asignas a una variable??

Código PHP:
var resultado = return patron.test(rut);
if (
resultado==true){
//algo

o preguntas directo?

Código PHP:
if (return patron.test(rut)==true){
//algo

__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #6 (permalink)  
Antiguo 25/07/2020, 20:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.450
Antigüedad: 8 años, 8 meses
Puntos: 939
Respuesta: Jquery Expresion Regular (facilita)

Cita:
Iniciado por pcarvajal Ver Mensaje
Código PHP:
se resume con un simple

return patron.test(rut); 
y como preguntas por el resultado?? lo asignas a una variable??

Código PHP:
var resultado = return patron.test(rut);
if (
resultado==true){
//algo

o preguntas directo?

Código PHP:
if (return patron.test(rut)==true){
//algo

Antes de retornar el valor, primero se ejecuta el método .test(), el cual devuelve un resultado, mismo que se termina retornando.

Pero si lo que buscas es retornar un valor A en caso de ser verdadero el resultado o uno B si no lo es y deseas hacerlo todo en una línea, puedes usar operadores ternarios:

Código Javascript:
Ver original
  1. return condición ? caso_verdadero : caso_falso;

__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #7 (permalink)  
Antiguo 26/07/2020, 12:46
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.723
Antigüedad: 12 años, 5 meses
Puntos: 1127
Respuesta: Jquery Expresion Regular (facilita)

cuando dije que se resumía en un simple

Código Javascript:
Ver original
  1. return patron.test(rut);

fue porque en tu código mostrado colocabas

si es verdadero
- retorna verdadero
caso contrario (lo mismo que decir "si es falso" ya que es un boleano)
- retorna falso

Código Javascript:
Ver original
  1. if(true){
  2.   return true;
  3. } else{
  4.   return false;
  5. }

redundante no? es mucho mas rápido retornar el valor obtenido sin preguntar si es falso o verdadero al final retornaras lo mismo.

----

No uses un IF si no piensas retornar un valor diferente a true o false, no tiene ningun sentido y solo aumentas la carga de memoria

Última edición por ArturoGallegos; 26/07/2020 a las 13:21
  #8 (permalink)  
Antiguo 26/07/2020, 14:32
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 698
Antigüedad: 18 años, 7 meses
Puntos: 8
Respuesta: Jquery Expresion Regular (facilita)

ahhh entiendo, preguntas directo

Código PHP:
if (patron.test(rut)){
//algo si es verdadero
}else{
//algo si es falso

__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X



La zona horaria es GMT -6. Ahora son las 18:30.