У меня к тебе вопрос. Я пишу простое регулярное выражение, но оно не работает так, как я хочу.
Мое регулярное выражение:
/^\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"), как это получить в данном случае? Пожалуйста, помогите мне!
@Thefourthbird извините за это, я просто пишу в качестве примера. Окей я отредактирую этот пост
Я думаю, вы хотите \bname = "([^"]*)"
с границей слова, верно? Если вы хотите только полное совпадение, вы также можете опустить группу захвата /\bname = "[^"]*"/
@Thefourthbird, ох, слава богу. Мои плохие, пожалуйста, дайте свой ответ ниже. Я сделаю это утвержденным ответом
Здесь нет опечатки, и она воспроизводима.
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)
ну работает идеально. Но я хочу использовать регулярное выражение, поэтому...
@NyamkhuuBuyanjargal Я обновил ответ регулярным выражением, пожалуйста, проверьте, возможно :)
Я получил точно правильный ответ. Кстати, спасибо, что ответили на мой вопрос @Четвертая птица.
Его ответ:
/\bname = "[^"]*"/
Но это не работает, потому что результат не может дать мне значение имени. Поэтому немного меняю.
Правильный совершенный ответ:
/\bname = "([^"]*)"/
Спасибо вам, ребята! Я действительно ценю это.
Шаблон ^\bname\b = "([^"]*)"$
не соответствует, так как утверждает начало и конец строки. В подобном шаблоне границы слов \b
также неявны и могут быть опущены из шаблона.
Этот шаблон, который вы пробовали name = "([^"]*)"$
, допускает частичное совпадение, начиная с имени, а затем будет соответствовать только тому, что он может подтвердить конец строки и даст вам неправильное совпадение.
Если вы начнете этот шаблон с границы слова, совпадения все равно не будет, потому что тогда частичное совпадение больше не допускается.
Вы можете начать сопоставление с границы слова, а затем зафиксировать в группе 1 значение между двойными кавычками, не используя какие-либо другие привязки.
\bname = "([^"]*)"
Смотрите матч на регулярное выражение101.
Вы уверены, что можете использовать
let case =
? случай кажется зарезервированным словом.