Tengo una pregunta para ti. Escribo expresiones regulares simples pero no funcionó de la manera que yo quiero.
Mi expresión regular:
/^\bname\b="([^"]*)"$/Pero no funcionó. Así que decidí cambiar esa expresión regular a esto:
/name="([^"]*)"$/esto está perfectamente bien para mí cuando solo tengo un caso de fósforo. En otras palabras, esto funciona bien en este caso:
let my_case = 'Content-Disposition: form-data; name="body"'; let result = my_case.match(/name="([^"]*)"$/); console.log(result);pero cuando cambio la cadena de mayúsculas y minúsculas para que me guste esto:
let my_case = 'Content-Disposition: form-data; name="relatedFile"; filename="article_217605.pdf"'; let result = my_case.match(/name="([^"]*)"$/); console.log(result);El resultado será como:
[ 'name="article_217605.pdf"', 'article_217605.pdf', index: 24, input: 'name="relatedFile"; filename="article_217605.pdf"', groups: undefined ]No quiero esto en realidad. Quiero obtener (name="relatedFile") ¿cómo obtener esto en este caso? ¡Por favor ayúdame!
El patrón ^\bname\b="([^"]*)"$ no coincide, ya que establece el inicio y el final de la cadena. En un patrón como este, los límites de las palabras \b también están implícitos y se pueden omitido del patrón.
Este patrón que probó name="([^"]*)"$ permitirá una coincidencia parcial que comienza con el nombre y luego solo coincidirá, ya que puede afirmar el final de la cadena y le dará una coincidencia incorrecta.
Si comenzara ese patrón con un límite de palabra, aún no habrá coincidencia porque ya no permitirá una coincidencia parcial.
Puede comenzar la coincidencia con un límite de palabra y luego capturar en el grupo 1 el valor entre comillas dobles sin usar ninguna de las otras anclas.
\bname="([^"]*)"Vea el partido en regex101 .
let somecase = 'Content-Disposition: form-data; name="relatedFile"; filename="article_217605.pdf"'; let res = somecase.split(";").map(ele => ele)[1]; console.log(res) let somecase = 'Content-Disposition: form-data; name="relatedFile"; filename="article_217605.pdf"'; let res = somecase.split(";").find(ele => /name=.*/g.test(ele)); console.log(res)Obtuve exactamente la respuesta correcta. Por cierto, gracias por responder a mi pregunta @El cuarto pájaro.
Su respuesta es:
/\bname="[^"]*"/Pero no funciona bien porque el resultado no me pudo dar el valor del nombre. Así que lo cambio un poco.
La respuesta perfecta correcta es:
/\bname="([^"]*)"/¡gracias chicos! Realmente lo aprecio.