admin管理员组

文章数量:1356560

I have found this function to check if a string only contains alphanumeric characters:

function test ( value ) {
 if( value.match("^[a-zA-Z0-9]*$")){
   alert('ok');
 }
}
test( 'Somevalue123' );

Now I would like to improve the above function to allow some other "special characters" like:

  (empty space)
' (single quote)
- (hyphen)
èàùìòÈÀÒÙÌéáúíóÉÁÚÍÓëäüïöËÄÜÏÖêâûîôÊÂÛÎÔç

And some symbols, like:

'_', '&', '.', ',', ':', '(', ')', '[', ']', '/', '+', '=', '?', '#', '@'

So I have try to update it and I was able to do so:

function test ( value, numbers, symbols ) {
 numbers = ( typeof numbers  === 'undefined' ) ? 0 : 1; // default numbers not allowed
 symbols = ( typeof symbols === 'undefined' ) ? 0 : 1; // default symbols not allowed
 value = value.replace(/è|à|ù|ì|ò|È|À|Ò|Ù|Ì|é|á|ú|í|ó|É|Á|Ú|Í|Ó|ë|ä|ü|ï|ö|Ë|Ä|Ü|Ï|Ö|ê|â|û|î|ô|Ê|Â|Û|Î|Ô|ç/g, '' ); // remove allowed characters before check

 // value = value.replace(/...???.../g, '' ); allow white space, single quote and symbols?

 if( numbers == 1 && value.match("^[a-zA-Z0-9 ]*$")){ alert('ok'); } // number allowed
 else if( value.match("^[a-zA-Z ]*$")){ alert('ok'); } // number not allowed
}

Not sure how to allow white space, single quote and symbols (with Regex or value.replace() is the same for me).

I have found this function to check if a string only contains alphanumeric characters:

function test ( value ) {
 if( value.match("^[a-zA-Z0-9]*$")){
   alert('ok');
 }
}
test( 'Somevalue123' );

Now I would like to improve the above function to allow some other "special characters" like:

  (empty space)
' (single quote)
- (hyphen)
èàùìòÈÀÒÙÌéáúíóÉÁÚÍÓëäüïöËÄÜÏÖêâûîôÊÂÛÎÔç

And some symbols, like:

'_', '&', '.', ',', ':', '(', ')', '[', ']', '/', '+', '=', '?', '#', '@'

So I have try to update it and I was able to do so:

function test ( value, numbers, symbols ) {
 numbers = ( typeof numbers  === 'undefined' ) ? 0 : 1; // default numbers not allowed
 symbols = ( typeof symbols === 'undefined' ) ? 0 : 1; // default symbols not allowed
 value = value.replace(/è|à|ù|ì|ò|È|À|Ò|Ù|Ì|é|á|ú|í|ó|É|Á|Ú|Í|Ó|ë|ä|ü|ï|ö|Ë|Ä|Ü|Ï|Ö|ê|â|û|î|ô|Ê|Â|Û|Î|Ô|ç/g, '' ); // remove allowed characters before check

 // value = value.replace(/...???.../g, '' ); allow white space, single quote and symbols?

 if( numbers == 1 && value.match("^[a-zA-Z0-9 ]*$")){ alert('ok'); } // number allowed
 else if( value.match("^[a-zA-Z ]*$")){ alert('ok'); } // number not allowed
}

Not sure how to allow white space, single quote and symbols (with Regex or value.replace() is the same for me).

Share Improve this question asked Jun 9, 2016 at 10:28 ipelipel 1,3461 gold badge18 silver badges46 bronze badges 2
  • 2 Just add all these characters in the character class. – Toto Commented Jun 9, 2016 at 10:29
  • for empty space use \s , signle quote use \' , hypen \- and all other characters you can include in character class mean [ and ] as @Toto said. – Shekhar Khairnar Commented Jun 9, 2016 at 10:31
Add a ment  | 

2 Answers 2

Reset to default 4

Use character class and add all the whitelisted characters in the character class. Make sure the hyphen - is escaped by preceding it with backslash \- or added at the beginning or end in the character class.

/^[a-zA-Z0-9 èàùìòÈÀÒÙÌéáúíóÉÁÚÍÓëäüïöËÄÜÏÖêâûîôÊÂÛÎÔç'-]*$/

Also, use RegExp#test instead of String#match

function test(value) {
    if (/^[a-zA-Z0-9 èàùìòÈÀÒÙÌéáúíóÉÁÚÍÓëäüïöËÄÜÏÖêâûîôÊÂÛÎÔç'-]*$/.test(value)) {
        alert('Ok');
    }
}

You can try something like this:

/^[a-z0-9-\'_\.,:\(\)&\[\]\/+=\?#@ \xC0-\xFF]+$/i

Logic

  • /a-z0-9/i will handle alphanumeric characters
  • \xC0-\xFF will handle foreign character
  • For symbols, you can list them individually.

An alternate could be listing all characters that are not allowed and use negate regex like

/^[^!~`\>\<]$/gi

本文标签: