RegEx [1-9]
不应该与1到9之间的数字匹配,为什么10包含0返回true?
答案 0 :(得分:7)
/[1-9]/
正则表达式表示“该字符串包含1
和9
之间的任何字符。
由于字符串包含1
,因此匹配。 0
无关紧要,字符串已匹配。
如果您想要“字符串由1到9之间的单个数字组成”,那么您需要:
/^[1-9]$/
如果你想“字符串只包含1到9之间的数字(至少其中一个)”,那么你想要:
/^[1-9]+$/
答案 1 :(得分:2)
正则表达式测试一个字符串,你正在测试字符串10
,它由字符1
和0
组成,然后测试该字符串是否包含以下字符之一: 1 2 3 4 5 6 7 8 9 ,它的确如下:1。因此,您的代码评估为真。
如果要检查给定数字是否在给定范围内(1 - 9),请利用JS将值强制转换为您需要的任何类型的事实:
var nString = '10';
console.log(nString > 0 && nString < 10);//false
或明确强制:
var strAsNr = +(nString);