如何使用字符串插值并创建带点分隔符数字的验证函数?
验证带点分隔符数字的函数实现
明确规则
先把要求的验证规则梳理清楚:
- 字符串不能以点(
.)开头或结尾 - 点分隔的每个数字段必须满足:
- 是1-3位的纯数字
- 若数字段长度大于1位,不能以
0开头(禁止前置零) - 不能出现空的数字段(即不能有连续的点)
函数实现(JavaScript)
用正则表达式可以高效实现这类格式验证,以下是具体函数:
function validateDotSeparatedNumber(str) { // 正则匹配符合规则的带点分隔数字 const validPattern = /^(([1-9]\d{0,2})|0)(\.([1-9]\d{0,2})|0)*$/; return validPattern.test(str); }
正则表达式解释
拆解正则的各个部分:
^:匹配字符串起始位置,确保没有前置的非法字符([1-9]\d{0,2})|0:匹配单个合法数字段:[1-9]\d{0,2}:匹配1-3位数字,第一位非0(避免多位数前置零)|0:允许单个0作为独立的合法段
(\.([1-9]\d{0,2})|0)*:匹配后续的「点+合法数字段」组合,*表示可以有0个或多个这样的组合(支持单个数字段的情况)$:匹配字符串结束位置,确保没有后置的非法字符
测试示例
把给出的测试用例代入函数,结果如下:
// 通过的情况 console.log(validateDotSeparatedNumber('100.000.002.333')); // true console.log(validateDotSeparatedNumber('10')); // true console.log(validateDotSeparatedNumber('20')); // true console.log(validateDotSeparatedNumber('100')); // true // 错误的情况 console.log(validateDotSeparatedNumber('0100.000')); // false console.log(validateDotSeparatedNumber('1000')); // false console.log(validateDotSeparatedNumber('000.000')); // false console.log(validateDotSeparatedNumber('100.000.')); // false console.log(validateDotSeparatedNumber('100.00.000')); // false console.log(validateDotSeparatedNumber('.100.00.000')); // false
关于字符串插值的使用
如果要在字符串中插入这类带点分隔的数字,先通过上面的函数验证格式合法性,再用模板字符串(字符串插值)直接嵌入即可,示例:
const inputNum = '100.000.002.333'; if (validateDotSeparatedNumber(inputNum)) { const resultStr = `已确认数字 ${inputNum} 格式合法`; console.log(resultStr); }
内容的提问来源于stack exchange,提问作者kennarddh
相关产品推荐
相关产品推荐

