我有一个用于匹配字母、数字和一些特殊字符的正则表达式,如下所示:^[A-za-z0-9 .@&,’()+/:]*$
我需要在此列表中添加一个连字符,不允许多个连字符,但我不太确定该怎么做。我看到了一些类似的东西,-{1}
但我不知道如何将它添加到现有的 rexex 中。
我正在使用 C++ 和 Qt5。
怎么样:
^[A-za-z0-9 .@&,’()+/:]*-?[A-za-z0-9 .@&,’()+/:]*$
这可以简化为:
^[\w .@&,’()+/:]*-?[\w .@&,’()+/:]*$
我不知道 C++ 是否支持它,但它可以简化为:
^([\w .@&,’()+/:])*-?(?1)*$
^[A-za-z0-9.@&,’()+/:]*-[A-za-z0-9.@&,’()+/:]*$
允许在字符串中的任何位置使用单个连字符。
请注意,连字符可以出现在任何部分(也可以出现在字符串的开头或结尾),而且它也是强制性的。
要使连字符可选,请使用^[A-za-z0-9.@&,’()+/:]*-?[A-za-z0-9.@&,’()+/:]*$