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

问题描述 投票:0回答:1

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

例如:

输入:

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

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

regex python-2.7
1个回答
1
投票

首先,从行的开头开始:

^

在行中的某个地方寻找特殊字符的前瞻:

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

因为您将反引号和#计为特殊字符,请确保将它们包含在字符集中。 (大多数东西不需要在字符集中转义)

还要在行中的某个位置查找字母数字字符:

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

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

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

把它们放在一起,你得到:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.