Проверьте, содержит ли входная строка число в JavaScript - PullRequest
110 голосов
/ 25 апреля 2011

Моя конечная цель - проверить поле ввода.Ввод может быть либо буквенным, либо числовым.

Ответы [ 10 ]

198 голосов
/ 02 марта 2015

Если я не ошибаюсь, вопрос требует «содержит число», а не «это число».Итак:

function hasNumber(myString) {
  return /\d/.test(myString);
}
99 голосов
/ 25 апреля 2011

Вы можете сделать это с помощью 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');
}
19 голосов
/ 25 апреля 2011
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}
6 голосов
/ 12 февраля 2016

Это не пуленепробиваемый ни в коем случае, но это сработало для моих целей и, возможно, кому-то поможет.

var value = $('input').val();
 if(parseInt(value)) {
  console.log(value+" is a number.");
 }
 else {
  console.log(value+" is NaN.");
 }
1 голос
/ 19 июня 2018

Один из способов проверить это - перебрать строку и вернуть 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;
        }
    }
}
1 голос
/ 09 апреля 2018

Использование Регулярных выражений с JavaScript .Регулярное выражение - это специальная текстовая строка для описания шаблона поиска, которая записывается в виде / pattern / modifiers, где «pattern» - это само регулярное выражение, а «modifiers» - это серия символов, указывающих различные параметры. Класс символов - это самая основная концепция регулярных выражений после буквального совпадения.Это позволяет одной небольшой последовательности символов соответствовать большему набору символов.Например, [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 Pattern Matching с регулярными выражениями.

0 голосов
/ 09 июля 2019

Вы также можете попробовать lodash:

const isNumeric = number => 
  _.isFinite(_.parseInt(number)) && !_.isNaN(_.parseInt(number))
0 голосов
/ 09 июня 2019

Чтобы проверить, является ли какой-либо символ числом без лишних символов, нужно адаптировать его по мере необходимости.

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)
0 голосов
/ 29 июня 2018

Этот код также помогает, "Обнаружение чисел в заданной строке" , когда найденные числа прекращают его выполнение.

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 голосов
/ 24 февраля 2015

Вы можете сделать это с помощью JavaScript. Нет необходимости в Jquery или Regex

function isNumeric(n) {
  if(!isNaN(n))
    {
     return true
    }
  else
   {
    return false
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...