-1

我需要在字符串中允许的标点符号列表中获取用户输入,然后匹配字符串以查找这些标点符号的出现。

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

  1. 用户不能在“允许的标点符号”框中重复标点符号。例如:不能使用“%%$#@”。
  2. 如果用户输入的密码只包含那些标点符号而没有其他标点符号。

此外,这需要是多语言安全的。

谢谢, Regex 的初学者

添加:

我使用的语言是 c#。需要将其放在 MVC 模型属性的数据注释中。

我确实能够使用以下方法过滤正则表达式以仅允许标点符号:"^(?![0-9])(?![a-zA-Z])\p{P}+$"

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

4

2 回答 2

0

至于您没有指定语言,我在 PHP 中实现了示例:

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

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

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

于 2012-06-13T13:32:09.430 回答
0

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

于 2012-06-13T13:21:55.443 回答