2012-04-16 170 views
11

我在遵循规则下找到了一个正则表达式。正则表达式包含和排除特殊字符

允许的字符

字母:A-Z/A-Z
编号:0-9
特殊字符:〜@#$^& *() - _ + = [] {} | \,。 ? :
(空格应该被允许)

不允许

特殊字符:<>'“/;`%

+0

其余的角色呢?他们是否被允许? – 2012-04-16 11:47:55

+0

你有没有试图想出一个?你对此有何疑问? – fivedigit 2012-04-16 11:48:04

+2

你只是想让我们知道你找到了它?谢谢。也许这也可以帮助你:http://www.regular-expressions.info/ – 2012-04-16 11:50:46

回答

25

对于允许的字符,你可以使用

^[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$ 

验证一个完整的字符串,应该只包含允许的字符,注意-最后(因为否则它就是一个范围),并且有几个字符会被转义出来

对于无效字符,你可以使用

[<>'"/;`%] 

即可查询到。

双方合并成一个单一的正则表达式,你可以使用

^(?=[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$)(?!.*[<>'"/;`%]) 

,但你需要一个正则表达式引擎,允许先行。

+0

你能否请澄清我应该如何使用你的正则表达式来仅允许我的字符串中的这些字符并将其余所有字符转换为空格字符? – 2012-11-08 15:33:20

+0

提出问题。 – Joey 2012-11-08 16:00:33

+0

这个答案帮了我,谢谢@Joey:D +1 – Anton 2016-05-31 13:33:48

7

您还没有真正问了一个问题,但假设你有一个,这可能是你的答案...

假设所有字符,除了“特殊字符”被允许,你可以写

String regex = "^[^<>'\"/;`%]*$"; 
+0

你能否请澄清我应该如何使用你的正则表达式来仅允许我的字符串中的这些字符并将其余所有字符转换为单个空格字符? – 2012-11-08 15:57:40

+2

@ user01'text = text.replaceAll(“[<>'\”/;%]“,”“);'或者如果你想结合多个特殊字符和空格'text = text.replaceAll(”[< '\“/;%] +”,“”);' – 2012-11-08 16:02:47

+0

非常感谢,但在我的情况下,不允许的字符都是允许的字符(允许的字符与问题中相同)。你能建议怎么做,指定允许的:a-z/A-Z /0-9〜@#$ ^&*() - _ + = [] {} | \,。 ? : – 2012-11-08 16:11:16

3
[[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]* 

如果您只想允许将它包装在^ $或您认为合适的任何其他分隔符中(如果您这样做),则不需要特定的禁止逻辑。