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