0

I have the following bit of code which is working, my question is if the user enters something that is not a letter or number how would I go about doing this ?

E.g they enter the letter "?" I want the console to now say " ? is not a letter or number" please see my below code to see what I currently have.

    let upperLower = prompt("please enter either a uppercase letter, lowercase letter or a number");
if (!isNaN(parseInt(upperLower))){

    console.log(upperLower + " is a number");
}
else if (upperLower == upperLower.toLowerCase()) {

  console.log(upperLower + " character is lowercase");
}
else if (upperLower == upperLower.toUpperCase()) {
    
    console.log(upperLower + " character is uppercase");
}`
PoisonMaster
  • 27
  • 1
  • 6

4 Answers4

1
function isNotAlphanumeric(str) {
    return !(str.length === 1 && (/[a-z\d]/i).test(str));
}
zr0gravity7
  • 2,917
  • 1
  • 12
  • 33
0

using How to check if character is a letter in Javascript?

Implementation:

let upperLower = prompt("please enter either a uppercase letter, lowercase letter or a number");

if( (upperLower.toUpperCase() == upperLower.toLowerCase() || upperLower.codePointAt(0) > 127) &&  isNaN(parseInt(upperLower))) {
    console.log(upperLower + " is not a letter or number");
}

else if (!isNaN(parseInt(upperLower))){

    console.log(upperLower + " is a number");
}
else if (upperLower == upperLower.toLowerCase()) {

  console.log(upperLower + " character is lowercase");
}
else if (upperLower == upperLower.toUpperCase()) {
    
    console.log(upperLower + " character is uppercase");
}
ᴓᴓᴓ
  • 1,178
  • 1
  • 7
  • 18
  • when I enter ? it comes back as character is lowercase instead of is not a letter or number. – PoisonMaster Jul 15 '21 at 21:25
  • Oops, I corrected the logic on checking if it is a letter and made the second conditional else if to keep them in a chain. It should work now. – ᴓᴓᴓ Jul 15 '21 at 21:34
  • It works perfectly , please can you explain that bit of code to me so I understand it. specifically codePointAt > 127. – PoisonMaster Jul 15 '21 at 21:39
  • Sure, that part isn't strictly necessary, it's from the linked post, and it accounts for cases where the input character is: "non English, High Ascii or double byte range" You can simply remove it if these cases aren't relevant, or leave it if they are. – ᴓᴓᴓ Jul 15 '21 at 21:45
0

Use RegEx:

if (/^[0-9]+(?:\.[0-9]+)?$/.test(upperLower)) { // 123 or 123.456
    console.log(upperLower, "is a number")
}

if (/^[0-9]+$/.test(upperLower)) { // only 123
    console.log(upperLower, "is a number")
}

if (/^[a-z]+$/.test(upperLower)) {
    console.log(upperLower, "is a lowercase")
}

if (/^[A-Z]+$/.test(upperLower)) {
    console.log(upperLower, "is a uppercase")
}

You can test any regex in regex101.

jtwalters
  • 1,024
  • 7
  • 25
0

This problem can be solved using a regular expression. Tested on Regex101.

var foo = prompt("please enter either a character or integer");
// if word character or digit => true, else => false
const bar = new RegExp(/[\da-z]+/, "i");
// is any digit => true, else => false
const numberRE = /\d+/;

if (bar.test(foo)){
     // if a number, log it's a number, else it's a string
    if (numberRE.test(foo)) {
     console.log("You entered a number");
    } else {
      console.log("You entered a letter");
    }
   // if input isn't a digit or word character, log this
} else {
  console.log("Enter a character or integer!");
} 
unrealapex
  • 578
  • 9
  • 23