我有一个匹配字母,数字和一些特殊字符的正则表达式如下:^[A-za-z0-9 .@&,’()+/:]*$
我需要在此列表中添加一个连字符,不允许使用多个连字符,但我不太清楚如何操作。我看到-{1}
的某些内容,但我不知道如何将其添加到现有的rexex中。
我正在使用C ++和Qt5。
答案 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.@&,’()+/:]*$