Sarahpre
Sarahpre

Reputation: 35

JavaScript string matching only at the start versus using indexOf?

I currently am matching user input as follows:

user_input = "upload a file"

if ( "upload a file".indexOf(user_input.toLowerCase()) > -1 ) {}

This work fine but the problem is, it matches "a file" which I don't want. I want it to only match if the beginning is correct.

This should match:

"upload"
"u"
"upload a"

This should not match, because the string does not match from the start:

"a"
"file"

Are there any suggestions on how to make this happen with indexOf?

Upvotes: 1

Views: 1494

Answers (3)

Micah
Micah

Reputation: 313

<script>
user_input = "upload a file"
if ( "upload a file".**substr**(0, user_input.length) == user_input.toLowerCase()) {}
</script>

Use the inputs to your advantage...

http://www.w3schools.com/jsref/jsref_substr.asp

Grab first X characters of the string, and make sure the whole string matches or any number of the characters you would like.

Upvotes: 1

Musa
Musa

Reputation: 97672

indexOf return the index of the match, so if you want to test if it match at the beginning just check if it returns 0

user_input = "upload a file"
if ( "upload a file".indexOf(user_input.toLowerCase()) == 0 ) {}

Upvotes: 4

Michal Klouda
Michal Klouda

Reputation: 14521

What you describe means you want compare with zero:

if ( "upload a file".indexOf(user_input.toLowerCase()) == 0) { }

Upvotes: 0

Related Questions