我找到了这个函数来检查一个字符串是否只包含字母数字字符:
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()对我来说是一样的。)
答案 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