Regex-如何防止重复的特殊字符?

Posted

技术标签:

【中文标题】Regex-如何防止重复的特殊字符?【英文标题】:Regex-How to prevent repeated special characters? 【发布时间】:2017-12-10 22:22:27 【问题描述】:

我没有使用正则表达式的经验。我需要一个不允许重复特殊字符(+-*/& 等)的正则表达式 字符串可以包含数字、字母数字和特殊字符。

这应该是有效的:abc,df

这应该是无效的:abc-,df

如果您能帮助我,我将不胜感激!感谢您的提前。

【问题讨论】:

您认为还有什么特殊字符? -, 对我来说同样“特别” 【参考方案1】:

目前提出的两种解决方案都匹配不允许允许的字符串。

但倾斜是如何防止......,所以我假设正则表达式 应该匹配 allowed 字符串。这意味着正则表达式应该:

匹配整个字符串,如果它不包含2 连续的特殊字符, 否则不匹配。

您可以将以下部分放在一起来实现:

^ - 字符串锚的开始, (?!.*[...]2) - 连续 2 次特殊的负前瞻 字符(此处标记为...),在任何地方, 匹配整个(非空)字符串的正则表达式, $ - 字符串锚点结束。

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

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

请注意,在 char 类中([] 之间)有一个反斜杠 转义以下字符应放在- 之前(如果在 序列的中间),右方括号, 反斜杠本身和/(正则表达式终止符)。

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

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

【讨论】:

效果很好,你拯救了我的一天。非常感谢,谢谢!【参考方案2】:

[\,\+\-\*\/\&amp;]2, 如果需要,可以在方括号中添加更多字符。 演示https://regex101.com/r/CBrldL/2

【讨论】:

漂亮而简单的一个。谢谢【参考方案3】:

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

[^A-Za-z0-9]2,

【讨论】:

以上是关于Regex-如何防止重复的特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止用户在文本框中输入特殊字符[重复]

R REGEX匹配-至少1个小写字母,1个数字,并且没有8个长度的特殊字符[重复]

删除java中的所有特殊字符[重复]

js,如何防止特殊字符被转义

Regex:过滤特殊字符(如日语),但保留表情符号

RegEx 用于匹配除一些特殊字符和“:)”之外的所有字符