javascript - Validate the string which needs to match particular condition(Regular Expression)? -
i want validate string, should not contain special characters except underscore(_). have written below code not able through.
var string = 'pro$12'; var result = /[a-za-z0-9_]*/.test(string);
in above given string not valid got result true. can body tell doing wrong here?
it returns true
because, able match pro
. can see actual matched string, match
function, this.
console.log(string.match(/[a-za-z0-9_]*/)); # [ 'pro', index: 0, input: 'pro$12' ]
even when doesn't match anything, example, input '$12', return true
. because, *
matches 0 or more characters. so, matches 0 characters before $
in $12
. (thanks @jack pointing out)
so, need is
console.log(/^[a-za-z0-9_]*$/.test(string)); # false
^
means beginning of string , $
means ending of string. telling regex engine that, match string has characters character class, beginning , ending of string.
note: instead of using explicit character class, [a-za-z0-9_]
, can use \w
. same character class mentioned.
quoting mdn docs regexp,
\w
matches alphanumeric character basic latin alphabet, including underscore. equivalent
[a-za-z0-9_]
.for example,
/\w/
matches'a'
in"apple,"
'5'
in"$5.28,"
,'3'
in"3d."
so, regex can shortened
console.log(/^\w*$/.test(string));
Comments
Post a Comment