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

标签 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() 对我来说是一样的)。

最佳答案

使用字符类,将所有白名单字符添加到字符类中。 确保通过在连字符 - 前面加上反斜杠 \- 或将其添加到字符类的开头或结尾来转义连字符。

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

此外,使用 RegExp#test而不是 String#match

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

关于javascript检查字符串是否只包含字母数字字符+其他特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37723380/

相关文章:

r - 获取字符串中最小的数字

c - 逗号分隔字符串的解析函数

javascript - setTimeout() - 分割 slider 中的输出不正确

javascript - 如何缓存使用脚本标签下载的已下载 javascript 文件

javascript - 改进 View 文件中的 JavaScript 代码

javascript - Array.prototype 方法会影响函数中的多个变量吗?

用于查找没有特定属性的元素的正则表达式(例如 "id")

python - 将字符串拆分为整数

regex - 如何在 Linux 上使用正则表达式查找文件中的信息

c# - 如何从文件中读取特殊字符?