RegEx for Javascript to allow only alphanumeric

前端 未结 18 1254
轻奢々
轻奢々 2020-11-22 15:13

I need to find a reg ex that only allows alphanumeric. So far, everyone I try only works if the string is alphanumeric, meaning contains both a letter and a number. I just w

相关标签:
18条回答
  • 2020-11-22 15:29
    /^[a-z0-9]+$/i
    
    ^         Start of string
    [a-z0-9]  a or b or c or ... z or 0 or 1 or ... 9
    +         one or more times (change to * to allow empty string)
    $         end of string    
    /i        case-insensitive
    

    Update (supporting universal characters)

    if you need to this regexp supports universal character you can find list of unicode characters here.

    for example: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/

    this will support persian.

    0 讨论(0)
  • 2020-11-22 15:32

    Input these code to your SCRATCHPAD and see the action.

    var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');
    
    0 讨论(0)
  • 2020-11-22 15:32

    Even better than Gayan Dissanayake pointed out.

    /^[-\w\s]+$/
    

    Now ^[a-zA-Z0-9]+$ can be represented as ^\w+$

    You may want to use \s instead of space. Note that \s takes care of whitespace and not only one space character.

    0 讨论(0)
  • 2020-11-22 15:33

    I have string similar to Samsung Galaxy A10s 6.2-Inch (2GB,32GB ROM) Android 9.0, (13MP+2MP)+ 8MP Dual SIM 4000mAh 4G LTE Smartphone - Black (BF19)

    Below is what i did:

    string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
    

    Notice i allowed ,._- then use split() and join() to replace , to - and space to - respectively.

    I ended up getting something like this: samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20 which is what i wanted.

    There might be a better solution but this is what i found working fine for me.

    0 讨论(0)
  • 2020-11-22 15:35

    Save this constant

    const letters = /^[a-zA-Z0-9]+$/
    

    now, for checking part use .match()

    const string = 'Hey there...' // get string from a keyup listner
    let id = ''
    // iterate through each letters
    for (var i = 0; i < string.length; i++) {
      if (string[i].match(letters) ) {
        id += string[i]
      } else {
        // In case you want to replace with something else
        id += '-'  
      }
    }
    return id
    
    0 讨论(0)
  • 2020-11-22 15:37

    This will work

    ^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
    

    It accept only alphanumeriuc characters alone:
    test cases pased :

    dGgs1s23 - valid
    12fUgdf  - valid,
    121232   - invalid, 
    abchfe   - invalid,
     abd()*  - invalid, 
    42232^5$ - invalid
    

    or

    You can also try this one. this expression satisfied at least one number and one character and no other special characters

    ^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
    

    in angular can test like:

    $scope.str = '12fUgdf';
    var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
    $scope.testResult = pattern.test($scope.str);
    

    PLUNKER DEMO

    Refered:Regular expression for alphanumeric in Angularjs

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