正则表达式不允许连续使用多个特殊字符

Regex to not allow multiple special chars in a row

本文关键字:特殊字符 不允许 连续 正则表达式      更新时间:2023-09-26

我需要一个不允许连续使用多个特殊字符的正则表达式。

例如:

"这是一个测试" = 有效输入
"这,是一个测试" = 有效输入
'...." = 无效输入
"this,, is a test" = 无效输入

根据定义"特殊字符"的方式,可以使用:

var valid = !str.match(/[^a-z0-9's]{2}/i);

规格后更新:

对于这个,"特殊"字符是,._-'"

var valid = !str.match(/[-,._'"]{2}/i);

为什么需要一个正则表达式来执行此操作?

 var is_special_character = function(ch) { ... }
 var is_valid = function(str) {
   var special_characters = 0;
   for(var i = 0; i < str.length; i++) {
     if(is_special_character(str[i]))
       special_characters++;
     else  
       special_characters = 0;
     if(special_characters > 1) return false;
   }
   return true;
 }