我想匹配仅包含字母数字和特殊字符混合的输入字符串(没有任何空格)。
例如:
输入:
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
如何检查并避免在此正则表达式中匹配包含空格的输入,还是有其他方法可以实现此目的?
首先,从行的开头开始:
^
在行中的某个地方寻找特殊字符的前瞻:
(?=.*[`!@#$%^&*().?":{}|<>\\/])
因为您将反引号和#
计为特殊字符,请确保将它们包含在字符集中。 (大多数东西不需要在字符集中转义)
还要在行中的某个位置查找字母数字字符:
(?=.*[a-z0-9])
然后匹配特殊字符和字母数字字符,直到到达行尾:
[`!@#$%^&*().?":{}|<>\\/\]a-z0-9]+$
把它们放在一起,你得到:
(?i)^(?=.*[`!@#$%^&*().?":{}|<>\\/\]])(?=.*[a-z0-9])[`!@#$%^&*().?":{}|<>\\/\]a-z0-9]+$