检查输入是数字还是字母javascript

Posted

技术标签:

【中文标题】检查输入是数字还是字母javascript【英文标题】:Check if input is number or letter javascript 【发布时间】:2013-08-05 05:08:06 【问题描述】:

我在 htmljavascript 中使用表单。我希望仅当用户输入 LETTER 并单击 submit 时才会弹出警报。

所以我有 HTML 代码:

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
    First name: <input type="text" name="age">
<input type="submit" value="Submit">   

还有 javascript 代码:

function checkInp()

var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change

alert("Must input numbers");
return false;


【问题讨论】:

定义“字母”。 “é”是字母吗? “α”呢?如果您指的是从 A 到 Z 和从 a 到 z 的 Ascii 字母,请这样说。 您可能还想更改 HTML。将&lt;input type="text" /&gt; 切换为&lt;input type="number" min="0" max="125" step="1" /&gt;。在现代浏览器中,这将检查没有任何 JS 的数字输入。 【参考方案1】:

你可以使用 isNaN()。当数据不是数字时返回true。

var data = 'hello there';
if(isNaN(data))
  alert("it is a valid number");
else 
  alert("it is not a valid number");

【讨论】:

isNaN(true) 返回 false【参考方案2】:

我知道这篇文章很旧,但它是我搜索时弹出的第一个。我尝试了@Kim Kling RegExp,但它失败了。同样在找到这个论坛之前,我已经尝试了这里列出的几乎所有其他变体。最后,除了我创建的这个之外,它们都没有工作。它工作正常,而且它是 es6:

    const regex = new RegExp(/[^0-9]/, 'g');
    const val = document.forms["myForm"]["age"].value;

    if (val.match(regex)) 
       alert("Must be a valid number");
    
   

【讨论】:

【参考方案3】:

谢谢,我今天使用@str8up7od 答案创建了一个函数,该函数还检查输入是否为空:

    function is_number(input) 
        if(input === '')
            return false;
        let regex = new RegExp(/[^0-9]/, 'g');
        return (input.match(regex) === null);
    

【讨论】:

【参考方案4】:

使用Regular Expression 仅匹配字母。如果您需要做一些更复杂的事情,比如确保它是一定数量的数字,了解这些知识也是很好的。

function checkInp()

    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    
        alert("Must input string");
        return false;
    

最好是否认数字以外的任何东西:

function checkInp()

    var x=document.forms["myForm"]["age"].value;
    var regex=/^[0-9]+$/;
    if (x.match(regex))
    
        alert("Must input numbers");
        return false;
    

【讨论】:

您是否在第二个代码 sn-p 中缺少 ! 之前的 x.match(regex) 这是最干净的解决方案 或者你的意思是regex.test(x)【参考方案5】:

如果您关心的是实数而不是字符串中的数字,那么最好和现代的方法是 typeof(变量)。例如:

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string

【讨论】:

【参考方案6】:

我认为最简单的方法是使用字符串创建一个Number 对象,并在Number 类本身提供的isInteger 函数的帮助下检查是否。

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false

【讨论】:

当心号码(''); //0 Number.isInteger('1') 不会返回 true。它返回假。它仍将读取为字符串。 通过Number('1') 【参考方案7】:

只需除以 1 的余数,即 x%1。如果余数为 0,则表示 x 是整数。否则,您必须显示消息“必须输入数字”。即使在字符串、十进制数字等情况下也可以使用。

function checkInp()

    var x = document.forms["myForm"]["age"].value;
    if ((x%1) != 0) 
    
        alert("Must input numbers");
        return false;
    

【讨论】:

【参考方案8】:

更好的(无错误)代码如下:

function isReallyNumber(data) 
    return typeof data === 'number' && !isNaN(data);

这也将处理空字符串。另一个原因,isNaN("12") 等于false,但"12" 是字符串而不是数字,所以它应该是true。最后,您可能会感兴趣的bonus link。

【讨论】:

另一个参考:***.com/questions/14636536/…【参考方案9】:

您可以使用 isNaN 函数来确定一个值是否不会转换为数字。示例如下:

function checkInp()

  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  
    alert("Must input numbers");
    return false;
  

【讨论】:

当心空字符串:isNaN('') === false; #jsrage 不要这样做,像'0xFF'和'2e32'这样的字符串会通过这个验证。 您不能使用它来检查数字。如果字母跟在数字后面,则失败。试试这个“3a”。 最疯狂的事实是NAN也是一个数字:( @StormcrowSX ***.com/questions/14636536/… 怎么样?【参考方案10】:

您可以使用isNaN 函数。如果数据不是数字,则返回 true。应该是这样的:

function checkInp()

    var x=document.forms["myForm"]["age"].value;
    if (isNaN(x)) // this is the code I need to change
    
        alert("Must input numbers");
        return false;
    

注意:isNan 将 10.2 视为有效数字。

【讨论】:

*isNaN - 是的,这可能是个问题,有没有办法只输入整数?感谢您的回答。 仅限整数,请使用正则表达式并查看我的答案。【参考方案11】:

试试这个:

if(parseInt("0"+x, 10) > 0)/* x is integer */

【讨论】:

或者干脆if ( (x &gt;&gt; 0) &gt; 0 ) 也工作得很好,除了十进制数字仍然存在问题。不过感谢一百万的回答。 你们能详细解释一下它是如何工作的吗? &gt;&gt;operator 是什么意思?提前致谢 不幸的是,它给出了 32 表示“32!”而不是错误。

以上是关于检查输入是数字还是字母javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字符是字母还是数字?

检查字符串中的一个字符是数字还是字母[Python] [关闭]

字符型怎么判断是否数字和字母?

c语言 如何判断输入的是数字还是字母

如何判断一个字符是数字还是字母

JavaScript - 如何检查是不是在数字输入字段中输入了字母字符或符号[重复]