Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/05/2013, 12:34
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Liado con expresión regular

buenas...
realmente es sencillo. lo que sucede es que estás usando el boundary incorrecto. el boundary \b es un ancla que posiciona el puntero entre un caracter \w y \W, o viceversa, \W y \w. comúnmente se le conoce como word boundary porque intenta parear los límites de las palabras. lo que significa, que con el patrón /\b@\w*\b/, no podría encontrar coincidencia en el string " @usuario " porque el arroba y el caracter anterior (espacio) pertenecen a una misma clase, \W. para que pueda coincidir en ese string, antes del arroba debería haber un caracter de la clase \w, por ejemplo " a@usuario ". el resultado devuelto por el patrón con el string anterior sería @usuario.

¿la solución? usar la versión contraria de word-boundary (\b), non-word boundary \B. el ancla \B pocisiona el puntero entre dos caracteres de la misma clase. es decir, entre dos caracteres de la clase \W o la clase \w. por ejemplo, el patrón /\B\w+/ en el string "usuario" devuelve el string "suario" ya que el ancla se posiciona entre la primera "u" y "s". en fin, el patrón que necesitas es /\B@\w+\b/g.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 11/05/2013 a las 12:41