Regex for allowing alphanumeric,-,_ and space

后端 未结 7 2236
北荒
北荒 2020-12-04 16:43

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.

Ca

相关标签:
7条回答
  • 2020-12-04 17:14

    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

    0 讨论(0)
  • 2020-12-04 17:15

    Character sets will help out a ton here. You want to create a matching set for the characters that you want to validate:

    • You can match alphanumeric with a \w, which is the same as [A-Za-z0-9_] in JavaScript (other languages can differ).
    • That leaves - 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)
      • Note that I'm escaping - as \- so that the regex engine doesn't confuse it with a character range like A-Z
    • Last up, you probably want to ensure that the entire string matches by anchoring the start and end via ^ 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]+$/

    0 讨论(0)
  • 2020-12-04 17:20

    Try this regex:

    /^[a-z\d\-_\s]+$/i
    
    0 讨论(0)
  • 2020-12-04 17:22
    /^[-\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 [a-z], be sure to place the hyphen at the beginning like so [-a-z])

    0 讨论(0)
  • 2020-12-04 17:27
    var string = 'test- _ 0Test';
    string.match(/^[-_ a-zA-Z0-9]+$/)
    
    0 讨论(0)
  • 2020-12-04 17:33

    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.

    1. ABC123
    2. ABC 123
    3. ABC123(space)
    4. ABC 123 (space)

    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.

    0 讨论(0)
提交回复
热议问题