正则表达式验证选定的标点符号列表

时间:2012-06-13 13:18:07

标签: c# regex asp.net-mvc

我要求在字符串中允许的标点符号列表中输入用户输入,然后匹配字符串以显示这些标点符号。

例如:用户输入“@#$%^&”。需要验证:

  1. 用户不能在“允许的标点符号”框中重复标点符号。例如:不能使用“%% $#@”。
  2. 如果用户输入的密码仅包含那些标点符号而没有其他标点符号。
  3. 此外,这需要多语言安全。

    谢谢, Regex初学者

    加了:

    我正在使用的语言是c#。需要将它放在MVC Model属性的数据注释中。

    我确实能够过滤正则表达式,只允许使用标点符号:“^(?![0-9])(?![a-zA-Z])\ p {P} + $”< / p>

    然而,我无法让正则表达式找到重复的标点符号。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题。使用正则表达式[.,:;']。如果您要匹配其他标点符号,请在方括号中列出它们。

答案 1 :(得分:0)

到目前为止,您没有指定语言,我在PHP中实现了示例:

$s = 'hello %wo$rl@@d';
$r = '~([@#\$%\^&]).*?(?=\1)~';

if (preg_match_all($r, $s, $m)) {
  // password is invalid
}

如果允许的标点符号中的一个在输入$ s的剩余部分重复,则满足条件。