如何使用正则表达式禁止重复字符
本文关键字:字符 禁止 何使用 正则表达式 | 更新日期: 2023-09-27 18:18:49
如何使用正则表达式禁止重复字符?
这个正则表达式不允许
1--234567890
1--2345--1212
1-2-3-4-5-6-7-8-9-0
1234567890
这里唯一的问题是减号不能在彼此后面输入,所以--
不应该匹配
字符串中有多少破折号没有限制。我用c#
Thanks in Advance
这将匹配任何一对相同的字符:
"(.)'1"
对于单词字符:
"('w)'1"
因此,如果正则表达式匹配,则希望验证失败。
更新:
现在您已经明确了只有--
是您需要匹配的,这里是另一个选项:
"--"
当然,在这种情况下,您可以简单地对字符串使用Contains("--")
使用反向向前看:^((.)(?!'2))+$
将匹配没有重复字符的字符串。
或者——可能更快:搜索(.)'1
,它将匹配一对重复字符。
如果一个破折号是你唯一关心的字符:
// this regular expression is "inexact", three dashes always has two dashes, etc
var bad = new Regex("--");
if (bad.IsMatch(input))
{
throw new ArgumentException("Not a valid format", "input");
}
或者更简单的:
// regular expression? no need
if (input.Contains("--"))
{
throw new ArgumentException("Not a valid format", "input");
}
不适合正则表达式。你可能想要做的是编写一个循环,遍历字符串并搜索重复项。最有效的方法是使用一些基于散列的数据结构,如字典。