My end goal is to validate an input field. The input may be either alphabetic or numeric.
18 Answers
If I'm not mistaken, the question requires "contains number", not "is number". So:
function hasNumber(myString) {
  return /\d/.test(myString);
}
5 Comments
.test method can be found here: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…You can do this using javascript. No need for Jquery or Regex
function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
While implementing
var val = $('yourinputelement').val();
if(isNumeric(val)) { alert('number'); } 
else { alert('not number'); }
Update: To check if a string has numbers in them, you can use regular expressions to do that
var matches = val.match(/\d+/g);
if (matches != null) {
    alert('number');
}
11 Comments
matches != null means not undefined or null while matches !== null means specifically not null but passes undefined.match() returns an array or null. So if (matches !== null) should be fine (and it will please JSHint.) Source: developer.mozilla.org/en/docs/Web/JavaScript/Reference/…isFinite(parseFloat(n)) in the first example. isNumeric("5,000") fails.isFinite() gives true if the passed value is a finite number and number 5,000 is a formatted string of number not a finite number.isNaN? I would suggest to either remove parse float from isNaN or add it to isFinite as well to be consisted.This is what you need.
      var hasNumber = /\d/;   
      hasNumber.test("ABC33SDF");  //true
      hasNumber.test("ABCSDF");  //false 
2 Comments
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}
1 Comment
It's not bulletproof by any means, but it worked for my purposes and maybe it will help someone.
var value = $('input').val();
 if(parseInt(value)) {
  console.log(value+" is a number.");
 }
 else {
  console.log(value+" is NaN.");
 }
2 Comments
Boolean(parseInt(3)) -> true;  Boolean(parseInt("3")) -> true;  Boolean(parseInt("three")) -> falseparseInt("0") will also be falseUsing Regular Expressions with JavaScript. A regular expression is a special text string for describing a search pattern, which is written in the form of /pattern/modifiers where "pattern" is the regular expression itself, and "modifiers" are a series of characters indicating various options.
         The character class is the most basic regex concept after a literal match. It makes one small sequence of characters match a larger set of characters. For example, [A-Z] could stand for the upper case alphabet, and \d could mean any digit.
From below example
- contains_alphaNumeric« It checks for string contains either letter or number (or) both letter and number. The hyphen (-) is ignored.
- onlyMixOfAlphaNumeric« It checks for string contain both letters and numbers only of any sequence order.
Example:
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) );
Out put:
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 with Regular Expressions.
Comments
You can do this using javascript. No need for Jquery or Regex
function isNumeric(n) 
{
  return !isNaN(n);
}
4 Comments
function isNumeric(n) { return !isNaN(n); }To test if any char is a number, without overkill❓, to be adapted as need.
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)Comments
One way to check it is to loop through the string and return true (or false depending on what you want) when you hit a number.
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;
        }
    }
}
Comments
parseInt provides integers when the string begins with the representation of an integer:
(parseInt '1a')  is  1
..so perhaps:
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
Pardon my CoffeeScript.
1 Comment
parseInt('10m') /* returns 10*/ will do the trick if the string starts with a number. Otherwise returns NaN. If at all this behaviour is ok for you, consider parseFloat('2.34million') so you get 2.34 instead of losing money ;-)I think it's simple and easy way to extract numbers and string.
str = "jdghj4874y6jfngvjbng"
let num = []
let strEx = []
for (i = 0; i < str.length; i++) {
  if (str[i] >= 0) {
    num.push(str[i])
  } else {
    strEx.push(str[i])
  }
}
console.log('nums:', JSON.stringify(num))
console.log('chars:', JSON.stringify(strEx))1 Comment
This code also helps in, "To Detect Numbers in Given String" when numbers found it stops its execution.
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_;
}
Comments
Below code checks for same number, sequence number and reverse number sequence.
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 Comments
We can check it by using !/[^a-zA-Z]/.test(e)
Just run snippet and check.
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 Comment
abc! - the regex you have checks if its not an alphabet; this means even symbols like ! will be treated as number.Nobody has addressed the body of the question:
My end goal is to validate an input field. The input may be either alphabetic or numeric.
-- op
So here is a function that returns a boolean answer,
true if the passed input has a Number value OR a strictly alphabetic string value,
false otherwise:
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>


















