0

我有这个正则表达式:

^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)([a-zA-Z]|)(\:|)[^\x00-\x1f\'\?\-\*\:\"\;\|\/]+$

这不允许使用单个破折号的文件名。但我不想只允许双破折号(文件名/文件夹中的任何地方),单破折号应该没问题。

感谢您提供任何信息。

4

1 回答 1

1

将末尾的更改为[^\x00-\x1f\'\?\-\*\:\"\;\|\/]+允许此字符类(可选地后跟破折号,后跟此字符类)重复任意次数的表达式。如果您愿意,还可以添加可选的前导和尾随破折号。(我在这里添加它们是因为它比解释更容易:-)

^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)([a-zA-Z]|)(\:|)-?[^\x00-\x1f\'\?\-\*\:\"\;\|\/]+(-[^\x00-\x1f\'\?\-\*\:\"\;\|\/]+)*-?$

我至少需要一个非破折号字符;如果您想允许单个破折号,则第一个非可选组可以包含它,但是尾随上下文必须看起来不同。

我会使用非捕获组,但你没有告诉你正在使用哪种正则表达式风格,所以也许你没有它们。

于 2012-09-17T14:03:04.740 回答