JavaScript正则匹配文本框每行0-6位数字的问题
解决textarea每行匹配0-6位数字的正则问题
你之前用的^[0-9]{0,6}\n$正则没法正常工作,核心问题有三个:
- 未启用多行模式,
^和$只会匹配整个文本的首尾,而非每行的开头结尾 - 强制要求行尾必须带换行符,导致最后一行无法被匹配
- 没有限制行内只能存在数字,带注释或其他字符的行可能被误判
正确的正则方案
1. 提取所有符合要求的行
如果需要从textarea内容里筛选出所有仅含0-6位数字的行,用这个正则:
/^\d{0,6}$/gm
各部分作用:
^\d{0,6}$:确保整行只有0-6位数字,无其他多余字符g:全局匹配,找出所有符合条件的行m:多行模式,让^和$对每行的首尾生效
2. 验证所有行是否都合规
如果要检查textarea里的每一行都满足0-6位数字的要求,用这个正则:
/^(?:\d{0,6}\r?\n)*\d{0,6}$/
这个正则兼容Windows的\r\n和Linux的\n换行符,同时覆盖了最后一行没有换行的场景。
实际使用示例
// 获取textarea内容 const content = document.getElementById('target-textarea').value; // 提取所有符合要求的行 const validLines = content.match(/^\d{0,6}$/gm) || []; console.log('符合要求的行:', validLines); // 验证所有行是否都合规 const allValid = /^(?:\d{0,6}\r?\n)*\d{0,6}$/.test(content); console.log('所有行是否合规:', allValid);
示例验证
- 对示例1的两行数字,
/^\d{0,6}$/gm会匹配到两行,allValid返回true - 对示例2的文本,第一行数字超过6位且带注释,
validLines只会提取第二行,allValid返回false
内容的提问来源于stack exchange,提问作者N KRUTHIKBHUSHAN
相关产品推荐
相关产品推荐

