正则表达式为字母数字字符,。@&,'()+ /:仅限一个连字符

时间:2013-09-26 08:56:50

标签: c++ regex qt5

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

我需要在此列表中添加一个连字符,不允许使用多个连字符,但我不太清楚如何操作。我看到-{1}的某些内容,但我不知道如何将其添加到现有的rexex中。

我正在使用C ++和Qt5。

2 个答案:

答案 0 :(得分:5)

怎么样:

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

可以减少为:

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

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

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

答案 1 :(得分:0)

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

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

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