我想要创建一个正则表达式来排除文件名中无效的字符。在Windows上,无效字符是/:*?"<>|,所以我尝试:
QRegExp("^[^\\/:*?\"<>|]*$")这适用于除反斜杠以外的所有字符。由于双反斜杠不起作用,我想如果使用一个反斜杠,我会看到会发生什么,但这给了编译器警告:未知的转义序列:'/',但没有解决问题。
如何修改正则表达式,使其在与QRegExpValidator一起使用时成功地排除反斜杠字符?
顺便说一下,我之所以这样做,是因为QDir::rename()似乎没有检查无效字符,因此如果输入无效字符,文件就会变得不可访问。限制用户可以输入的字符是为了避免这种情况,还是QDir提供了我忽略的机制?
发布于 2016-04-27 13:28:39
QRegExp("^[^\\\\/:*?\"<>|]*$")或者在带有原始字符串的c++11中:
QRegExp(R"(^[^\\/:*?"<>|]*$)")发布于 2016-04-27 13:27:24
我认为你必须使用\\\\。QRegExp文档说:
注意: C++编译器在字符串中转换反斜杠。若要在regexp中包括一个\,请输入两次,即\。若要匹配反斜杠字符本身,请输入四次,即\\。
Se QRegExp
https://stackoverflow.com/questions/36891039
复制相似问题