You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从textarea中提取所有name与value对应值(无需指定索引)

解决方案:提取textarea中所有name与value的对应值

我来帮你搞定这个问题!你原来的代码只能提取第一个匹配项,是因为通过split分割后仅取了索引[1]的内容,无法遍历所有匹配对。要实现提取所有符合name=(.+?) & value=(.+?)的内容,我们可以用正则表达式全局匹配+循环遍历的方式,具体实现如下:

修改后的完整代码

HTML部分

<textarea name="pull">input type="text" name="bd" value="bd" input type="text" name="bd1" value="bd2" input type="text" name="bd2" value="bd3" </textarea> <br/> 
<input type="button" onclick="pulldata()" value="Button" /> <br/> 
<textarea name="tor" id="tor"></textarea>

JavaScript部分

<script language="javascript">
function pulldata() {
    // 获取源textarea的内容
    const raw = document.getElementsByName('pull')[0].value;
    // 定义正则表达式:全局匹配name和value的键值对
    // 解释:
    // - /g: 全局匹配,会遍历所有符合条件的内容
    // - name="([^"]+)": 捕获name属性的值([^"]+表示匹配除双引号外的所有字符)
    // - \s+: 匹配name和value之间的任意空格
    // - value="([^"]+)": 捕获value属性的值
    const regex = /name="([^"]+)"\s+value="([^"]+)"/g;
    let matches;
    const result = [];

    // 循环遍历所有匹配结果
    while ((matches = regex.exec(raw)) !== null) {
        // matches[1]是捕获到的name值,matches[2]是捕获到的value值
        result.push(`${matches[1]}: "${matches[2]}"`);
    }

    // 将结果数组拼接成字符串,放到目标textarea中
    document.getElementById('tor').value = result.join(', ');
};
</script>

代码说明

  1. 正则表达式全局匹配:通过/name="([^"]+)"\s+value="([^"]+)"/g可以一次性匹配所有包含name和value属性的片段,避免了手动指定索引的麻烦。
  2. 循环遍历匹配结果:使用while循环调用regex.exec(raw),每次调用会返回下一个匹配的结果,直到没有匹配项时返回null,循环结束。
  3. 结果拼接:把每一对name和value按你需要的格式存入数组,最后用join(', ')拼接成完整的字符串,避免了手动处理最后一个逗号的问题(如果需要保留末尾逗号,可以改成result.join(', ') + ',')。

运行效果

点击按钮后,目标textarea会输出:

bd: "bd", bd1: "bd2", bd2: "bd3"

内容的提问来源于stack exchange,提问作者user5724063

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:45:19