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

Posted

技术标签:

【中文标题】如何使用正则表达式检查用户输入是不是仅包含特殊字符?【英文标题】:How to use regex to check that user input does not consist of special characters only?如何使用正则表达式检查用户输入是否仅包含特殊字符? 【发布时间】:2011-04-08 15:41:21 【问题描述】:

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

【问题讨论】:

这和jQuery无关,你是说javascript Nono... JavaScript 已重命名为 jQuery,你知道吗? @OP:你可能想看看bassistance.de/jquery-plugins/jquery-plugin-validation和***.com/questions/280759/… 【参考方案1】:
str.match(/^[A-Z#@,]+$/)

将匹配一个字符串...

... 以 ^ 开头并以封闭的模式结束 $ ... 包含任何大写字母A-Z(不匹配小写字母) ... 仅包含特殊字符 #@, ...至少有 1 个字符(无空字符串)

如果不区分大小写,您可以在末尾添加i:(例如/pattern/i

** 更新 **

如果您需要验证该字段是否仅包含特殊字符,您可以检查字符串是否仅包含非单词或数字的字符:

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

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

【讨论】:

我想我没有让你明白,关键是特殊字符太多了&我之前写的只是实例["AB#,A89@,@#ASD 是允许的,但是@#$​​^& or # is not allowed"]。它可以是任何组合,如 AB,AB,*Ab 但不应该只有特殊字符。使用特殊字符的唯一方法该特定字段上的字符是将特殊字符与 Digit[eg-9()] 或任何 character.whta 相关联??【参考方案2】:

如果您可以使用“否定匹配”进行验证,i。 e.如果正则表达式 not 匹配,则输入正常,那么我建议

^\W*$

这将匹配一个仅由非单词字符(或空字符串)组成的字符串。

如果你需要一个肯定的匹配,那么使用

^\W*\w.*$

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

【讨论】:

【参考方案3】:

我相信您正在寻找的是这样的:

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

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

【讨论】:

以上是关于如何使用正则表达式检查用户输入是不是仅包含特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得正则表达式来检查字符串是不是仅包含字母字符 [a-z] 或 [A-Z]?

如何检查字符串是不是仅包含 ASCII?

在线等!!如何使用正则表达式去除特殊符号

正则表达式条件字符串仅包含英语而不是希腊语,反之亦然(希腊语而不是英语)

当字符串包含特殊字符时,缓慢的正则表达式查询

如何使用正则表达式匹配或替换仅包含数值的密码