23

我正在找到一个符合以下规则的正则表达式。

允许的字符

字母:az / AZ
数字:0-9
特殊字符:~ @ # $ ^ & * ( ) - _ + = [ ] { } | \ , . ? :(
应该允许空格)

不允许

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

4

3 回答 3

40

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

^[a-zA-Z0-9~@#$^*()_+=[\]{}|\\,.?: -]*$

验证应仅包含允许的字符的完整字符串。请注意,-它位于末尾(因为否则它将是一个范围)并且一些字符被转义。

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

[<>'"/;`%]

检查他们。

要将两者组合成一个正则表达式,您可以使用

^(?=[a-zA-Z0-9~@#$^*()_+=[\]{}|\\,.?: -]*$)(?!.*[<>'"/;`%])

但是您需要一个允许前瞻的正则表达式引擎。

于 2012-04-16T11:49:30.890 回答
11

你实际上没有问过问题,但假设你有一个问题,这可能是你的答案......

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

String regex = "^[^<>'\"/;`%]*$";
于 2012-04-16T11:49:53.777 回答
4
[a-zA-Z0-9~@#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*

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

于 2012-04-16T11:51:06.130 回答