所属分类:web前端开发
我们在开发时可能需要找到只包含数字而不包含任何其他字符的字符串。最简单的检查方法是解析字符串中的数字并将其长度与原始字符串的长度进行比较。如果两者相同,则意味着该字符串仅包含数字。用户可以使用parseInt()方法来解析字符串中的数字。
但是,在本教程中,我们将学习其他方法来检查 JavaScript 中的字符串是否仅包含数字。
我们可以使用 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() 方法获取字符的 ASCII 值,该字符位于字符串中的第 i 个索引处
步骤 3 - 检查索引 ith 处的字符的 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>
在 JavaScript 中,Number 是一个对象,我们可以使用它的构造函数来创建它的实例。我们可以传递一个值作为 Number() 构造函数的参数,以用数字值初始化变量。
我们还可以将数字字符串作为 Number() 构造函数的参数传递。它解析数字并返回数字值。如果我们传递包含非数字字符的字符串,它将返回 NaN 值。
用户可以使用下面的语法来使用 Numberconstructor()来检查字符串是否仅包含数字。
let num = Number(string1); if (num != NaN) { // contains non-digit numbers }else{ // contains only digits. }
在上面的语法中,string1是一个包含数字和非数字字符的字符串。如果 Number() 构造函数返回 NaN,则字符串包含非数字字符;否则,它返回数值。
在下面的示例中,string1 仅包含数字。我们将它作为 Number() 构造函数的参数传递,用户可以看到它在输出中返回实际的数值而不是 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() 构造函数通过一个线性代码来执行任务。