如何让这个正则表达式接受不超过1个特殊字符

时间:2015-06-10 20:07:47

标签: regex

^(?=.*[A-Z])(?=.*[!@#$%^&*()-_=+{[}\]:;'<,>.?\/]).{8,}$

?=.*我理解是说匹配任何这些角色无限次。

我取出了.*,但它没有按预期工作,并验证以下字符串:*OeuH5c#i`m$0\\\H2e&#.?*是有效的。

我还跟着{1}括号中的字符列表来明确说明我只想要一个字符,但这也不起作用..

如果没有.*,那么只有在找到1个特殊字符的情况下才能实现这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

^(?=.*[A-Z])(?=\w*[-!@#$%^&*()_=+{[}\]:;'<,>.?\/]\w*$).{8,}$

RegEx Demo

  1. 围绕特殊字符类机智\w* o任意一方,以确保只有特殊字符。
  2. 将未转义的连字符保留在字符类的第一个或最后一个位置