如何使用正则表达式检查用户输入是否仅包含特殊字符?

如何对不允许使用特殊字符的字段进行validation,这意味着允许AB#,A89@,@#ASD ,但不允许使用@#$^&# 。 我需要RegEx进行此validation。

 str.match(/^[AZ#@,]+$/) 

将匹配一个字符串……

  • …以封闭模式开始^并结束$
  • …包含任何大写字母AZ (不符合小写字母)
  • …只包含特殊字符#@ ,和
  • …至少有1个字符(没有空字符串)

对于不区分大小写的情况,您可以在结尾处添加i :(ig /pattern/i

** 更新 **

如果需要validation字段是否仅包含特殊字符,则可以检查字符串是否仅包含非字或数字的字符:

 if (str.match(/^[^A-Z0-9]*$/i)) { alert('Invalid'); } else { alert('Valid'); } 

这将匹配仅包含非字母数字字符的字符串。 空字符串也会产生无效。 将*替换为+以允许空字符串有效。

如果您可以使用“否定匹配”进行validation,即如果正则表达式不匹配则输入正常,那么我建议

 ^\W*$ 

这将匹配仅包含非单词字符(或空字符串)的字符串。

如果您需要积极匹配,请使用

 ^\W*\w.*$ 

如果字符串中至少有一个字母数字字符,则匹配。

我相信你要找的是这样的:

 !str.match(/^[@#$^&]*$/) 

检查字符串是否包含符号,即它包含至少一个不是符号的字符。