Regex-如何防止重复的特殊字符?
Regex-How to prevent repeated special characters?
我没有使用正则表达式的经验。我需要一个不允许重复特殊字符(+-*/& 等)的正则表达式
该字符串可以包含数字、字母数字和特殊字符。
这应该是有效的:abc,df
这应该是无效的:abc-,df
如果你能帮助我,我将不胜感激!感谢提前。
[\,\+\-\*\/\&]{2,}
如果需要,请在方括号中添加更多字符。
演示 https://regex101.com/r/CBrldL/2
使用以下正则表达式匹配无效字符串。
[^A-Za-z0-9]{2,}
目前提供的两个解决方案匹配 不允许 的字符串。
但标题是 如何防止...,所以我假设正则表达式
应该匹配 allowed 字符串。这意味着正则表达式应该:
- 匹配整个字符串如果不包含2
连续的特殊字符,
- 否则不匹配。
您可以将以下部分放在一起来实现:
^
- 字符串锚点的开始,
(?!.*[...]{2})
- 负面前瞻 连续 2 个特殊
字符(此处标记为...
),在任何地方,
- 匹配整个 (non-empty) 字符串的正则表达式,
$
- 字符串锚结束。
所以整个正则表达式应该是:
^(?!.*[!@#$%^&*()\-_+={}[\]|\;:'",<.>\/?]{2}).+$
请注意,在字符 class 中(在 [
和 ]
之间)一个反斜杠
转义以下字符应放在 -
之前(如果在
序列的中间),右方括号,
反斜杠本身和 /
(正则表达式终止符)。
或者如果你想将正则表达式应用到单个单词(不是整个
字符串),则正则表达式应为:
\b(?!\S*[!@#$%^&*()\-_+={}[\]|\;:'",<.>\/?]{2})\S+
我没有使用正则表达式的经验。我需要一个不允许重复特殊字符(+-*/& 等)的正则表达式 该字符串可以包含数字、字母数字和特殊字符。
这应该是有效的:abc,df
这应该是无效的:abc-,df
如果你能帮助我,我将不胜感激!感谢提前。
[\,\+\-\*\/\&]{2,}
如果需要,请在方括号中添加更多字符。
演示 https://regex101.com/r/CBrldL/2
使用以下正则表达式匹配无效字符串。
[^A-Za-z0-9]{2,}
目前提供的两个解决方案匹配 不允许 的字符串。
但标题是 如何防止...,所以我假设正则表达式 应该匹配 allowed 字符串。这意味着正则表达式应该:
- 匹配整个字符串如果不包含2 连续的特殊字符,
- 否则不匹配。
您可以将以下部分放在一起来实现:
^
- 字符串锚点的开始,(?!.*[...]{2})
- 负面前瞻 连续 2 个特殊 字符(此处标记为...
),在任何地方,- 匹配整个 (non-empty) 字符串的正则表达式,
$
- 字符串锚结束。
所以整个正则表达式应该是:
^(?!.*[!@#$%^&*()\-_+={}[\]|\;:'",<.>\/?]{2}).+$
请注意,在字符 class 中(在 [
和 ]
之间)一个反斜杠
转义以下字符应放在 -
之前(如果在
序列的中间),右方括号,
反斜杠本身和 /
(正则表达式终止符)。
或者如果你想将正则表达式应用到单个单词(不是整个 字符串),则正则表达式应为:
\b(?!\S*[!@#$%^&*()\-_+={}[\]|\;:'",<.>\/?]{2})\S+