javascript检查字符串是否仅包含字母数字字符+其他特殊字符

时间:2016-06-09 10:28:08

标签: javascript regex string validation

我找到了这个函数来检查一个字符串是否只包含字母数字字符:

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

现在我想改进上面的功能,允许其他一些“特殊字符”,如:

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

和一些符号,如:

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

所以我尝试更新它,我能够这样做:

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
}

不确定如何允许空格,单引号和符号(使用Regex或value.replace()对我来说是一样的。)

2 个答案:

答案 0 :(得分:3)

使用字符类并添加字符类中的所有白名单字符。 确保连字符-在前面加上反斜杠\-进行转义,或者在字符类的开头或结尾添加。

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

另外,请使用RegExp#test代替String#match

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

答案 1 :(得分:2)

您可以尝试这样的事情:

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

逻辑

  • /a-z0-9/i将处理字母数字字符
  • \xC0-\xFF将处理外国字符
  • 对于符号,您可以单独列出它们。

替代方案可以列出所有不允许的字符,并使用否定正则表达式,如

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