I am searching for a regular expression for allowing alphanumeric characters, -, _ or spaces in JavaScript/jQuery. I tried Googling but wasn't able to find that.
Can anyone help me out with this?
Thanks in advance.
Character sets will help out a ton here. You want to create a matching set for the characters that you want to validate:
\w
, which is the same as [A-Za-z0-9_]
in JavaScript (other languages can differ).-
and spaces, which can be combined into a matching set such as [\w\- ]
. However, you may want to consider using \s
instead of just the space character ( \s
also matches tabs, and other forms of whitespace)
-
as \-
so that the regex engine doesn't confuse it with a character range like AZ
^
and $
The full regex you're probably looking for is:
/^[\w\-\s]+$/
(Note that the +
indicates that there must be at least one character for it to match; use a *
instead, if a zero-length string is also ok)
Finally, http://www.regular-expressions.info/ is an awesome reference
Bonus Points: This regex does not match non-ASCII alphas. Unfortunately, the regex engine in most browsers does not support named character sets, but there are some libraries to help with that .
For languages/platforms that do support named character sets, you can use /^[\p{Letter}\d\_\-\s]+$/
试试这个正则表达式:
/^[a-z\d\-_\s]+$/i
/^[-\w\s]+$/
\w matches letters , digits , and underscores
\s matches spaces , tabs , and line breaks
- matches the hyphen (if you have hyphen in your character set example [az], be sure to place the hyphen at the beginning like so [-az])
var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)
var regex = new RegExp("^[A-Za-z0-9? ,_-]+$");
var key = String.fromCharCode(event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
in the regExp [A-Za-z0-9?spaceHere,_-]
there is a literal space after the question mark '?'. This matches space. Others like /^[-\w\s]+$/
and /^[az\d\-_\s]+$/i
were not working for me.
Try this regex
*Updated regex
/^[a-z0-9]+([-_\s]{1}[a-z0-9]+)*$/i
This will allow only single space or - or _ between the text
Ex: this-some abc123_regex
To learn : https://regexr.com
*Note: I have updated the regex based on Toto question
For me I wanted a regex which supports a strings as preceding. Basically, the motive is to support some foreign countries postal format as it should be an alphanumeric with spaces allowed.
So I ended up by writing custom regex as below.
/^([a-z]+[\s]*[0-9]+[\s]*)+$/i
Here, I gave * in [\s]*
as it is not mandatory to have a space. A postal code may or may not contains space in my case.
var1 regex = new RegExp1("^[A-Za-z0-9? ,_-]+$");
var1 key = String1.fromCharCode(event1.charCode ? event1.which : event1.charCode);
if (!regex1.test(key)) {
event1.preventDefault();
return false;
}
Following both are worked for me.
/[^a-zA-Z0-9\-_\s]/g
/[^a-z\d\-_\s]+$/i
Can replace other except alphanumerics, -, _ with empty like this.
inputString.replace(/[^a-zA-Z0-9\-_\s]/g,"");
Try this for allowing alphanumeric and space
[a-zA-Z0-9 ]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.