首页 > 解决方案 > 在 JavaScript 中制作正则表达式以在表单标签中找到“动作”属性并替换它

问题描述

我目前正在制作一个 HTML 表单上传系统。我正在尝试使用读取 HTML 文件,fs.readFile然后尝试将表单标记的 action 属性替换为"/form/" + form._id,以便表单向该路由发出 POST 请求。

我无法制作正则表达式来查找操作属性。这是我到目前为止所拥有的:

var newData = data.replace(/action(? *)=(? *)("|')(?=.*)("|')/g, 'action="/form/' + form._id + '/");

我知道正则表达式是错误的。我真的无法理解它是如何工作的。如果您有答案,如果您不介意,请写下并解释。先感谢您。

标签: javascripthtmlregex

解决方案


我认为您不需要如此复杂的正则表达式

const path = "/form/1";

const str = `<form action="/test/1" method="POST" data-id="420"></form>`;

const result1 = str.replace(/action=\"(.*?)\"/gm, `action="${path}"`);
const result2 = str.replace(/(?<=action=\")(.*?)(?=\")/gm, path); // with positive lookbehind,lookahead


console.log(result1);
console.log(result2);


推荐阅读