2017-07-06 156 views
-1

我对正则表达式没有经验。我需要一个不允许重复特殊字符的正则表达式(+ - */&等) 该字符串可以包含数字,字母数字和特殊字符。正则表达式 - 如何防止重复的特殊字符?

这应该是有效的:ABC,DF

这应该是无效的:ABC-,DF

,我将非常感激,如果你能帮帮我!感谢您的提前。

+1

还有什么你认为一个特殊字符? '-'和','对我来说同样是'特殊的' – Brandon

回答

1

两个方案至今匹配字符串,它是不允许的。

但tilte是如何防止...,所以我认为正则表达式 应该匹配允许字符串。这意味着,正则表达式应该:

  • 比赛整个字符串,如果它不包含2个 连续的特殊字符,
  • 不能匹配。

你可以做到这一点放在一起以下几个部分:

  • ^ - 字符串锚开始,
  • (?!.*[...]{2}) - 连续2个特殊 字符负先行(这里标记为... ),在任何地方,
  • 匹配整个(非空)字符串的正则表达式,
  • $ - 字符串定位结束。

所以整个正则表达式应该是:

^(?!.*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2}).+$ 

注意,一个字符类中(间[])逃逸以下字符反斜杠 应该-前放置(如果 中间的顺序),结束方括号, 反斜杠本身和/(正则表达式终止符)。

或者,如果你想在正则表达式适用于单个单词(不是整个 字符串),那么正则表达式应该是:

\b(?!\S*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2})\S+ 
+0

它工作的很棒,你救了我的一天。真的很感激,谢谢! – asyaben

0

使用以下正则表达式来匹配无效字符串。提出

[^A-Za-z0-9]{2,} 
相关问题