基于指定关键词的输入值两步清理操作实现需求
解决方案
前端JS修改(实现单按钮触发两步清理)
直接修改现有JS逻辑,通过两个正则表达式依次完成清理步骤:
<input type="text" id="numberInput" value="548 601 002 847 147"> <button onclick="cleanNumbers()">执行清理</button> <script> function cleanNumbers() { const input = document.getElementById('numberInput'); let content = input.value.trim(); const targetKeyword = '002'; const skipBlock = '847'; // 第一步:定位关键词,跳过其后空格及紧邻的指定数字块,删除剩余内容 const step1Regex = new RegExp(`(.*?${targetKeyword}\\s+${skipBlock})(.*)`, 's'); content = content.replace(step1Regex, '$1'); // 第二步:删除关键词及其后的所有内容 const step2Regex = new RegExp(`(.*?)(\\s*${targetKeyword}.*)`, 's'); content = content.replace(step2Regex, '$1').trim(); input.value = content; } </script>
后端PHP补充(如需服务器端验证处理)
如果需要在表单提交后通过PHP做后端处理,逻辑与前端一致:
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $rawInput = trim($_POST['numberInput']); $targetKeyword = '002'; $skipBlock = '847'; // 第一步清理 $step1Pattern = "/(.*?$targetKeyword\\s+$skipBlock)(.*)/s"; $processed = preg_replace($step1Pattern, '$1', $rawInput); // 第二步清理 $step2Pattern = "/(.*?)(\\s*$targetKeyword.*)/s"; $processed = preg_replace($step2Pattern, '$1', $processed); $processed = trim($processed); echo "清理结果:" . $processed; } ?> <form method="post"> <input type="text" name="numberInput" value="548 601 002 847 147"> <button type="submit">后端执行清理</button> </form>
逻辑说明
- 第一步正则匹配关键词
002及紧随其后的847,保留这部分之前的内容+002 847,删除847之后的所有数字块; - 第二步正则匹配关键词
002的位置,删除关键词及其后的所有内容,最终得到关键词之前的数字块; - 示例输入
548 601 002 847 147经过两步处理后,最终结果为548 601。
内容的提问来源于stack exchange,提问作者Israel
相关产品推荐
相关产品推荐

