Как получить точный шаблон с определенным словом, используя Regex в javascript

У меня к тебе вопрос. Я пишу простое регулярное выражение, но оно не работает так, как я хочу.

Мое регулярное выражение:

/^\bname\b = "([^"]*)"$/

Но это не сработало. Поэтому я решил изменить это регулярное выражение на это:

/name = "([^"]*)"$/

это совершенно нормально для меня, когда у меня есть только один спичечный коробок. Другими словами, в этом случае это работает нормально:

let my_case = 'Content-Disposition: form-data; name = "body"';
let result = my_case.match(/name = "([^"]*)"$/);
console.info(result);

но когда я меняю строку регистра следующим образом:

let my_case = 'Content-Disposition: form-data; name = "relatedFile"; filename = "article_217605.pdf"';
let result = my_case.match(/name = "([^"]*)"$/);
console.info(result);

Результат будет таким:

[
  'name = "article_217605.pdf"',
  'article_217605.pdf',
  index: 24,
  input: 'name = "relatedFile"; filename = "article_217605.pdf"',
  groups: undefined
]

Я не хочу этого на самом деле. Я хочу получить (name="relatedFile"), как это получить в данном случае? Пожалуйста, помогите мне!

Вы уверены, что можете использовать let case =? случай кажется зарезервированным словом.

The fourth bird 19.03.2022 07:15

@Thefourthbird извините за это, я просто пишу в качестве примера. Окей я отредактирую этот пост

Nyamkhuu Buyanjargal 19.03.2022 07:17

Я думаю, вы хотите \bname = "([^"]*)" с границей слова, верно? Если вы хотите только полное совпадение, вы также можете опустить группу захвата /\bname = "[^"]*"/

The fourth bird 19.03.2022 07:19

@Thefourthbird, ох, слава богу. Мои плохие, пожалуйста, дайте свой ответ ниже. Я сделаю это утвержденным ответом

Nyamkhuu Buyanjargal 19.03.2022 07:26

Здесь нет опечатки, и она воспроизводима.

The fourth bird 20.03.2022 13:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

  • Так как это строка
  • Вместо регулярного выражения вы можете разделить и сопоставить элемент для этого случая.

let somecase = 'Content-Disposition: form-data; name = "relatedFile"; filename = "article_217605.pdf"';

let res = somecase.split(";").map(ele => ele)[1];
console.info(res)
  • Использование регулярных выражений

let somecase = 'Content-Disposition: form-data; name = "relatedFile"; filename = "article_217605.pdf"';

let res = somecase.split(";").find(ele => /name=.*/g.test(ele));
console.info(res)

ну работает идеально. Но я хочу использовать регулярное выражение, поэтому...

Nyamkhuu Buyanjargal 19.03.2022 07:29

@NyamkhuuBuyanjargal Я обновил ответ регулярным выражением, пожалуйста, проверьте, возможно :)

Dreamy Player 19.03.2022 08:08

Я получил точно правильный ответ. Кстати, спасибо, что ответили на мой вопрос @Четвертая птица.

Его ответ:

/\bname = "[^"]*"/

Но это не работает, потому что результат не может дать мне значение имени. Поэтому немного меняю.

Правильный совершенный ответ:

/\bname = "([^"]*)"/

Спасибо вам, ребята! Я действительно ценю это.

Ответ принят как подходящий

Шаблон ^\bname\b = "([^"]*)"$ не соответствует, так как утверждает начало и конец строки. В подобном шаблоне границы слов \b также неявны и могут быть опущены из шаблона.

Этот шаблон, который вы пробовали name = "([^"]*)"$, допускает частичное совпадение, начиная с имени, а затем будет соответствовать только тому, что он может подтвердить конец строки и даст вам неправильное совпадение.

Если вы начнете этот шаблон с границы слова, совпадения все равно не будет, потому что тогда частичное совпадение больше не допускается.

Вы можете начать сопоставление с границы слова, а затем зафиксировать в группе 1 значение между двойными кавычками, не используя какие-либо другие привязки.

\bname = "([^"]*)"

Смотрите матч на регулярное выражение101.

Другие вопросы по теме

Похожие вопросы