JavaScript 如何检查字符串是否只包含数字
在开发过程中,我们可能需要找到只包含数字而不包含任何其他字符的字符串。最简单的方法是解析字符串中的数字,并将其长度与原始字符串的长度进行比较。如果两者相等,则表示字符串只包含数字。用户可以使用 parseInt()
方法来解析字符串中的数字。
然而,在本教程中,我们将学习其他方法来检查字符串是否只包含数字。
使用for循环和CharCodeAt()方法
我们可以使用for循环遍历字符串。我们可以使用索引值和 charCodeAt() 方法获取字符串中的每个字符的ASCII值。然后,我们可以将字符的ASCII值与数字的ASCII值进行比较,并得到字符是数字还是非数字字符的结果。
语法
用户可以按照下面的语法来检查字符串是否只包含数字。
function isOnlyDigits(string) {
for (let i = 0; i < string.length; i++) {
var ascii = string.charCodeAt(i);
if (ascii < 48 || ascii > 57) {
return false;
}
}
return true;
}
在上面的语法中,我们对每个字符串字符执行charCodeAt()方法。
步骤
步骤1 − 使用for循环遍历字符串。
步骤2 − 使用 charCodeAt() 方法获取字符串中第i个索引位置的字符的ASCII值。
步骤3 − 检查第i个索引位置的字符的ASCII值是否在48和57之间。如果不在此范围内,则表示它是一个非数字字符,返回false。
步骤4 − 如果for循环的迭代完成,并且函数没有找到任何非数字字符,则返回true,表示字符串只包含数字。
示例
在下面的示例中,我们取两个字符串,其中包含只有数字和混合字符。用户可以观察输出,根据字符串是否只包含数字或非数字,在网页上打印相应的消息。
<html>
<body>
<h3>Using the <i> for-loop and charCodeAt() </i> method to check if string contains only digits</h2>
<div id = "output"> </div>
<script>
let output = document.getElementById("output");
function isOnlyDigits(string) {
for (let i = 0; i < string.length; i++) {
var ascii = string.charCodeAt(i);
if (ascii < 48 || ascii > 57) {
output.innerHTML += "The " + string + " contains non-digits characters also. <br/>";
return false;
}
}
output.innerHTML += "The " + string + " contains only digits characters also. <br/>";
return true;
}
isOnlyDigits("122135567343");
isOnlyDigits("df32d23");
</script>
</body>
</html>
使用Number()构造函数
在JavaScript中,Number是一个对象,我们可以使用它的构造函数来创建实例。我们可以将一个值作为参数传递给Number()构造函数,以初始化变量的数值。
我们还可以将数字字符串作为Number()构造函数的参数传递。它会解析数字并返回数值。如果我们传递包含非数字字符的字符串,则返回NaN值。
语法
用户可以使用以下语法来使用Number构造函数来检查字符串是否只包含数字。
let num = Number(string1);
if (num != NaN) {
// contains non-digit numbers
}else{
// contains only digits.
}
在上面的语法中, string1 是一个包含数字和非数字字符的字符串。如果Number() constructor 返回NaN,则表示字符串包含非数字字符;否则,它将返回数字值。
示例
在下面的示例中, string1 只包含数字。我们将其作为Number() constructor的参数传递,并且用户可以看到它在输出中返回的是实际的数字值,而不是NaN。
<html>
<body>
<h3>Using the <i> Number() constructor </i> method to check if string contains only digits</h2>
<div id="output"></div>
<script>
let output = document.getElementById("output");
let string1 = "3433454646";
let num = Number(string1);
if (num != NaN) {
output.innerHTML += "The " + string1 + " Contains only digits! <br/>";
} else {
output.innerHTML += "The " + string1 + " Contains non-digits characters! <br/>";
}
</script>
</body>
</html>
使用正则表达式
在这个部分,我们将创建一个正则表达式,用来匹配字符串中的非数字字符。如果我们找到任何一个非数字字符的匹配项,我们可以说该字符串也包含非数字字符。
语法
用户可以按照以下语法使用正则表达式来检查字符串是否只包含数字。
let regex = /\D/;
let bool = regex.test(str);
if (bool) {
// contains non-digits
} else {
// contains only digits
}
上述语法中使用test()方法与字符串匹配正则表达式模式。
如果字符串包含任何非数字字符,test()方法返回true。
正则表达式解释
- \D - 用于匹配任何单个非数字字符。
我们还可以在正则表达式中使用“g”标志来匹配所有出现的非数字字符,但我们已经知道字符串只包含一个非数字字符。
示例
在这个示例中,当用户点击按钮时,isContainsDigits()函数使用不同的字符串参数。此外,用户可以观察使用不同字符串的test()方法的输出。
<html>
<body>
<h3>Using the <i> regular expression </i> method to check if string contains only digits </h3>
<div id = "output"> </div>
<button onclick="isContainsDigits('8954656');isContainsDigits('dfjsdh4354354')">
Click here
</button>
<script>
let output = document.getElementById("output");
let regex = /\D/;
function isContainsDigits(str) {
let bool = regex.test(str);
if (bool) {
output.innerHTML += "The " + str + " Contains non-digits! <br/>";
} else {
output.innerHTML += "The " + str + " Contains only digits characters! <br/>";
}
}
</script>
</body>
</html>
我们学到了三种不同的方法来检查一个字符串是否只包含数字。用户可以使用 Number() 构造函数以一行代码完成任务。