使用正则表达式匹配仅包含字母数字和特殊字符混合的输入(无空格)

时间:2019-03-21 06:29:37

标签: regex python-2.7

我想匹配仅包含字母数字和特殊字符(无空格)混合的输入字符串。

例如:

输入:

1) fdg56`)(12@$5hjfgh436757))((((321\]
2) dfdgfhfghb
3) 46567657
4) df
5) &%%@erer* #@*(tyhjd4
6) sadsf5ds7f78sf
7) #29 street
8) &%%@fdgdg*#@*(dsfdsg

对于上述八个输入,正则表达式只能匹配1和8。它不匹配输入数字5,因为它有一个空格。 我写的正则表达式找到了1,8和5作为匹配项。

正则表达式为:

(?=[\!\$\%\^\&\*\(\)\.\?\"\:\{\}\|\<\>\\\/]+).*

链接:

https://regex101.com/r/0ZUuda/10

如何检查并避免匹配此正则表达式中包含空格的输入,还是有其他方法可以实现此目的?

1 个答案:

答案 0 :(得分:1)

首先,从该行的开头开始:

^

在行中的某处预想特殊字符:

(?=.*[`!@#$%^&*().?":{}|<>\\/])

由于您将反引号和#视为一个特殊字符,因此请确保将它们包括在字符集中。 (大多数内容不需要在字符集中转义)

还可以预想行中某处的字母数字字符:

(?=.*[a-z0-9])

然后匹配特殊字符和字母数字字符,直到到达行末:

[`!@#$%^&*().?":{}|<>\\/\]a-z0-9]+$

将它们放在一起,您将得到:

(?i)^(?=.*[`!@#$%^&*().?":{}|<>\\/\]])(?=.*[a-z0-9])[`!@#$%^&*().?":{}|<>\\/\]a-z0-9]+$

https://regex101.com/r/0ZUuda/11