在JavaScript中检查输入字符串是否包含数字

264
我的最终目标是验证一个输入字段,这个输入可能是字母或数字。

6
不需要使用 jQuery 完成这个。 - Šime Vidas
请编辑您的问题标题,将其改为更准确的内容,例如“jQuery输入验证仅包含字母字符”,因为您的描述并没有回答“如何在字符串中查找数字”的问题,这将导致我们社区的搜索结果与该问题无关。谢谢! - Juanma Guerrero
将问题标题中的“jQuery”编辑掉,并替换为“Javascript”。 - VKen
@VKen,标题不需要加标签。 - Starx
@Starx 注意到了,我只是保持了提问者最初的格式。 - VKen
对于新手: 这个问题的确切解决方案在这里=>https://dev59.com/Gm025IYBdhLWcg3wzpeK#28813213 :) - Pixie Dust
17个回答

1

parseInt函数在字符串以整数形式开始时提供整数:

(parseInt '1a')  is  1

..所以也许:

isInteger = (s)->
  s is (parseInt s).toString()  and  s isnt 'NaN'

(isInteger 'a') is false
(isInteger '1a') is false
(isInteger 'NaN') is false
(isInteger '-42') is true

请原谅我的CoffeeScript。


基本上,如果字符串以数字开头,则 parseInt('10m') /* 返回 10*/ 可以解决问题。否则返回 NaN。如果这种行为对您来说可以接受,考虑使用 parseFloat('2.34million'),这样您就可以得到 2.34 而不是损失金钱;-) - mixdev

0
这段代码还可以帮助我们在给定的字符串中检测数字,当发现数字时,它会停止执行。
function hasDigitFind(_str_) {
  this._code_ = 10;  /*When empty string found*/
  var _strArray = [];

  if (_str_ !== '' || _str_ !== undefined || _str_ !== null) {
    _strArray = _str_.split('');
    for(var i = 0; i < _strArray.length; i++) {
      if(!isNaN(parseInt(_strArray[i]))) {
        this._code_ = -1;
        break;
      } else {
        this._code_ = 1;
      }
    }

  }
  return this._code_;
}

0

我们可以使用!/[^a-zA-Z]/.test(e)来检查它
只需运行片段并检查即可。

function handleValueChange() {
  if (!/[^a-zA-Z]/.test(document.getElementById('textbox_id').value)) {
      var x = document.getElementById('result');
      x.innerHTML = 'String does not contain number';
  } else {
    var x = document.getElementById('result');
    x.innerHTML = 'String does contains number';
  }
}
input {
  padding: 5px;
}
<input type="text" id="textbox_id" placeholder="Enter string here..." oninput="handleValueChange()">
<p id="result"></p>


1
这个程序对于输入“abc!”无效 - 你所使用的正则表达式检查它是否不是字母; 这意味着即使像!这样的符号也会被视为数字。 - Chaitanya Bapat

0

尝试这个方法来检查字符串是否包含数字。

'test123'.split('').reduce((result,ch) => ch.charCodeAt(0) >= 48 && ch.charCodeAt(0) <= 57), false);

0

没有人回答问题的主体:

我的最终目标是验证一个输入字段。输入可能是字母或数字。

-- op

这里有一个函数,返回一个布尔值答案,如果传递的输入具有数字值或严格的字母字符串值,则为true,否则为false

const isAlphaOrNumeric = input => {
  if ('' === input.value.trim())
    return false // empty
    
  if (!Number.isNaN(Number(input.value)))
    return true //'number'

  return /^[a-zA-Z]+$/.test(input.value.trim()) // 'alphabetic'
}

const isAlphaOrNumeric = input => {
  if ('' === input.value.trim())
    return false

  if (!Number.isNaN(Number(input.value)))
    return true

  return /^[a-zA-Z]+$/.test(input.value.trim())
}

const f = document.querySelector('form')
const test = f.querySelector('[name="test"]')
const test2 = f.querySelector('[name="test2"]')
const test3 = f.querySelector('[name="test3"]')
f.onsubmit = e => {
  e.preventDefault()
  console.log(test.value, isAlphaOrNumeric(test))
  console.log(test2.value, isAlphaOrNumeric(test2))
  console.log(test3.value, isAlphaOrNumeric(test3))
}
<form>
  <input name="test" value="abc"><br>
  <input name="test2" value="-3.14"><br>
  <input name="test3" value="AFF4B3"><br>
  <button>
    check it
  </button>
</form>


0
以下代码检查相同数字、序列号和反向数字序列。
function checkNumSequnce(arrayNM2) {
    inseqCounter=1;
    continousSeq = 1;
    decsequenceConter = 1;
    var isequence = true;
    for (i=0;i<arrayNM2.length-1;i++) {
      j=i+1;
      if (arrayNM2[i] == arrayNM2[i+1]) { 
                if(inseqCounter > 1 || decsequenceConter > 1){
                    isequence =  false; break;
                }        
                 continousSeq++; 
                             
         }         
        else if (arrayNM2[j]- arrayNM2[i] == 1) {
            if(decsequenceConter > 1 || continousSeq > 1){
                isequence =  false; break;  
              }      
             inseqCounter++;               
                        
        } else if(arrayNM2[i]- arrayNM2[j] == 1){
              if(inseqCounter > 1 || continousSeq > 1){
                   isequence =  false; break;
               }
              decsequenceConter++;
        }else{
              isequence= false;
              break;
        }
  };

  console.log("isequence: "+ isequence); 

  };

2
这无疑是我见过的最混乱和啰嗦的SO解决方案。 - Barris
@kshitij 这个答案适用于顺序和重复数字验证。也许这个答案不完全符合这个问题。但是非常棒的逻辑。谢谢 - Varun Sharma

-2

您也可以尝试使用lodash:

const isNumeric = number => 
  _.isFinite(_.parseInt(number)) && !_.isNaN(_.parseInt(number))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接