0

我有一个用于匹配字母、数字和一些特殊字符的正则表达式,如下所示:^[A-za-z0-9 .@&,’()+/:]*$

我需要在此列表中添加一个连字符,不允许多个连字符,但我不太确定该怎么做。我看到了一些类似的东西,-{1}但我不知道如何将它添加到现有的 rexex 中。

我正在使用 C++ 和 Qt5。

4

2 回答 2

5

怎么样:

^[A-za-z0-9 .@&,’()+/:]*-?[A-za-z0-9 .@&,’()+/:]*$

这可以简化为:

^[\w .@&,’()+/:]*-?[\w .@&,’()+/:]*$

我不知道 C++ 是否支持它,但它可以简化为:

^([\w .@&,’()+/:])*-?(?1)*$
于 2013-09-26T08:59:15.043 回答
0

^[A-za-z0-9.@&,’()+/:]*-[A-za-z0-9.@&,’()+/:]*$允许在字符串中的任何位置使用单个连字符。

请注意,连字符可以出现在任何部分(也可以出现在字符串的开头或结尾),而且它也是强制性的。

要使连字符可选,请使用^[A-za-z0-9.@&,’()+/:]*-?[A-za-z0-9.@&,’()+/:]*$

于 2013-09-26T08:59:31.197 回答