在JavaScript中创建一个正则表达式,以便在表单标签中找到“ action”属性并替换它

问题描述 投票:0回答:2

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

我在制作正则表达式以查找action属性时遇到了麻烦。这是我到目前为止所拥有的:

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

我知道正则表达式是错误的。我真的不明白它是如何工作的。如果您有答案,也可以写和解释。预先谢谢你。

javascript html regex
2个回答
1
投票
我认为您不需要这么复杂的正则表达式

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);

0
投票
这适用于action属性之前和之后的任何属性。它还确保替换仅在表单标签中进行。

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);
© www.soinside.com 2019 - 2024. All rights reserved.