我目前正在制作HTML表单上传系统。我试图使用fs.readFile
读取HTML文件,然后尝试将表单标签的action属性替换为"/form/" + form._id
,以便表单向该路由发出POST请求。
我在制作正则表达式以查找action属性时遇到了麻烦。这是我到目前为止所拥有的:
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);
var form = {
_id: 123
};
var path = '/test/' + form._id;
var str = '<form method="post" action="/test/1" class="foo"></form>';
var result = str.replace(/(<form [^>]*? action=["'])([^"']*)/, '$1' + path);
console.log(result);