javascript - 在 JavaScript 中制作正则表达式以在表单标签中找到“动作”属性并替换它
问题描述
我目前正在制作一个 HTML 表单上传系统。我正在尝试使用读取 HTML 文件,fs.readFile
然后尝试将表单标记的 action 属性替换为"/form/" + form._id
,以便表单向该路由发出 POST 请求。
我无法制作正则表达式来查找操作属性。这是我到目前为止所拥有的:
var newData = data.replace(/action(? *)=(? *)("|')(?=.*)("|')/g, 'action="/form/' + form._id + '/");
我知道正则表达式是错误的。我真的无法理解它是如何工作的。如果您有答案,如果您不介意,请写下并解释。先感谢您。
解决方案
我认为您不需要如此复杂的正则表达式
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);