入力文字列にJavaScriptの数値が含まれているかどうかを確認する


137

私の最終目標は、入力フィールドを検証することです。入力は、アルファベットまたは数値のいずれかです。


4
そのためにjQueryは必要ありません。
–ŠimeVidas

質問のタイトルを編集して、「jQuery入力はアルファベット文字のみを検証する」などのより正確なものに編集してください。説明では「文字列内の数値を検索する方法」に関する回答がないため、コミュニティにとって不適切な検索結果になります。ありがとう!
Juanma Guerrero

質問のタイトルから「jQuery」を編集し、「Javascript」に置き換えました。
VKen

@VKen、タイトルにタグを付ける必要はありません。
Starx

@Starxが指摘したように、私は質問の投稿者が始めたフォーマットをそのまま保持しています。
VKen

回答:


288

私が間違っていないのであれば、質問には「数である」ではなく「数を含む」が必要です。そう:

function hasNumber(myString) {
  return /\d/.test(myString);
}

1
まさに私が必要としたもの。ありがとう
AndyH

このソリューションでは、3.2や1e4などの整数以外の数値は考慮されません
ekkis

8
します。コンソールでチェックインします:hasNumber( "check 3.2 or 1e4")= true vs hasNumber( "check no numbers")= false。3.2と1e4自体に数値が含まれているためです。
Zon

なぜこの答えが上にないのですか?
Rakesh Nair

それは正確に置かれた質問に答えます。
Zon

108

これは、javascriptを使用して行うことができます。JqueryやRegexは不要

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

実装中

var val = $('yourinputelement').val();
if(isNumeric(val)) { alert('number'); } 
else { alert('not number'); }

更新:文字列に数字が含まれているかどうかを確認するには、正規表現を使用してそれを行うことができます

var matches = val.match(/\d+/g);
if (matches != null) {
    alert('number');
}

2
matches != null手段ではないundefinedか、nullしばらくmatches !== null、具体的な手段ではないnullが、パスundefined
2014年

match()配列またはを返しますnull。だから、if (matches !== null)問題ないはずです(そしてそれはJSHintを喜ばれます。)出典:developer.mozilla.org/en/docs/Web/JavaScript/Reference/...
ジェイソン

isFinite(parseFloat(n))最初の例にあるはずです。isNumeric("5,000")失敗します。
m.spyratos 2015年

@ m.spyratos、まあ、isFinite()渡された値がfinite数値であり、数値5,000が有限数ではなく数値のフォーマットされた文字列である場合、trueを返します。
Starx 2015年

@Starx、同意する。しかし、フォーマットされた文字列を入力としてサポートしない場合、なぜparse float inを使用するのisNaNですか?パースフロートを削除するisNaNか、追加してisFinite構成することをお勧めします。
m.spyratos 2015年

22
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}

これが実際に尋ねられた正確な質問に答えることを理解するために、質問全体を読む必要がありました。質問のタイトルは少し紛らわしいです。
2014年

9

それは決して防弾ではありませんが、私の目的のために機能し、おそらく誰かを助けるでしょう。

var value = $('input').val();
 if(parseInt(value)) {
  console.log(value+" is a number.");
 }
 else {
  console.log(value+" is NaN.");
 }

Boolean(parseInt(3)) -> true; Boolean(parseInt("3")) -> true; Boolean(parseInt("three")) -> false
Elon Zito

5

使用してJavaScriptで正規表現を。正規表現は、検索パターンを説明するための特別なテキスト文字列で、/ pattern / modifiersの形式で記述されます。「pattern」は正規表現自体であり、「modifiers」はさまざまなオプションを示す一連の文字です。 文字クラスはリテラル試合後の最も基本的な正規表現のコンセプトです。これにより、1つの小さな文字シーケンスがより大きな文字セットと一致します。たとえば、大文字のアルファベットを表すことができ、
         [A-Z]\d表し、任意の数字を意味します。

以下の例から

  • contains_alphaNumeric«文字列が文字または数字(または)文字と数字の両方を含むかどうかをチェックします。ハイフン( - )は無視されます
  • onlyMixOfAlphaNumeric«文字列がシーケンス順の文字と数字の両方を含むかどうかをチェックします。

例:

function matchExpression( str ) {
    var rgularExp = {
        contains_alphaNumeric : /^(?!-)(?!.*-)[A-Za-z0-9-]+(?<!-)$/,
        containsNumber : /\d+/,
        containsAlphabet : /[a-zA-Z]/,

        onlyLetters : /^[A-Za-z]+$/,
        onlyNumbers : /^[0-9]+$/,
        onlyMixOfAlphaNumeric : /^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$/
    }

    var expMatch = {};
    expMatch.containsNumber = rgularExp.containsNumber.test(str);
    expMatch.containsAlphabet = rgularExp.containsAlphabet.test(str);
    expMatch.alphaNumeric = rgularExp.contains_alphaNumeric.test(str);

    expMatch.onlyNumbers = rgularExp.onlyNumbers.test(str);
    expMatch.onlyLetters = rgularExp.onlyLetters.test(str);
    expMatch.mixOfAlphaNumeric = rgularExp.onlyMixOfAlphaNumeric.test(str);

    return expMatch;
}

// HTML Element attribute's[id, name] with dynamic values.
var id1 = "Yash", id2="777", id3= "Yash777", id4= "Yash777Image4"
    id11= "image5.64", id22= "55-5.6", id33= "image_Yash", id44= "image-Yash"
    id12= "_-.";
console.log( "Only Letters:\n ", matchExpression(id1) );
console.log( "Only Numbers:\n ", matchExpression(id2) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id3) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id4) );

console.log( "Mixed with Special symbols" );
console.log( "Letters and Numbers :\n ", matchExpression(id11) );
console.log( "Numbers [-]:\n ", matchExpression(id22) );
console.log( "Letters :\n ", matchExpression(id33) );
console.log( "Letters [-]:\n ", matchExpression(id44) );

console.log( "Only Special symbols :\n ", matchExpression(id12) );

出力:

Only Letters:
  {containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: true, mixOfAlphaNumeric: false}
Only Numbers:
  {containsNumber: true, containsAlphabet: false, alphaNumeric: true, onlyNumbers: true, onlyLetters: false, mixOfAlphaNumeric: false}
Only Mix of Letters and Numbers:
  {containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Only Mix of Letters and Numbers:
  {containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Mixed with Special symbols
Letters and Numbers :
  {containsNumber: true, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Numbers [-]:
  {containsNumber: true, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters :
  {containsNumber: false, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters [-]:
  {containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Only Special symbols :
  {containsNumber: false, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}

正規表現によるjavaパターンマッチング


4

必要に応じて適合させるために、任意の文字が過剰でなく❓であるかどうかをテストする。

const s = "EMA618"

function hasInt(me){
  let i = 1,a = me.split(""),b = "",c = "";
  a.forEach(function(e){
   if (!isNaN(e)){
     console.log(`CONTAIN NUMBER «${e AT POSITION ${a.indexOf(e)} => TOTAL COUNT ${i}`)
     c += e
     i++
   } else {b += e}
  })
  console.log(`STRING IS «${b}», NUMBER IS «${c}»`)
  if (i === 0){
    return false
    // return b
  } else {
    return true
    // return +c
  }
}


hasInt(s)


2

これを確認する1つの方法は、文字列をループして、数値を押したときにtrue(または必要に応じてfalse)を返すことです。

function checkStringForNumbers(input){
    let str = String(input);
    for( let i = 0; i < str.length; i++){
              console.log(str.charAt(i));
        if(!isNaN(str.charAt(i))){           //if the string is a number, do the following
            return true;
        }
    }
}

0

これは、javascriptを使用して行うことができます。JqueryやRegexは不要

function isNumeric(n) {
  if(!isNaN(n))
    {
     return true
    }
  else
   {
    return false
   }
}

14
やりすぎ。ちょうどかもしれないfunction isNumeric(n) { return !isNaN(n); }
ルカスティーブ

これは、任意の文字が数字であるかどうかも確認しません。しかし、私はこれに触発された解決策を考えることができます。
タイラーLazenby

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

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を許してください。


-1

lodashを試すこともできます。

const isNumeric = number => 
  _.isFinite(_.parseInt(number)) && !_.isNaN(_.parseInt(number))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.