我一直在尝试编写一个正则表达式,该正则表达式将附加一个带有七位数字标识符后跟连字符的文件名,例如1234567 - filename.pdf
文件名可以是文件名有效字符的任何集合。
到目前为止,我有正则表达式^[0-9]{7} - .*
,它与字符串匹配,但它也与7654321 - 1234567 - filename.pdf
和3214567 - 7654321 - 1234567 - filename.pdf
匹配,依此类推。
是否有正则表达式只匹配带有一组数字和连字符的字符串?像^[0-9]{7} -{1} .*
答案 0 :(得分:3)
您可以添加否定前瞻:
^[0-9]{7} - (?![0-9]{7} - ).*
^^^^^^^^^^^^^^^
请参阅regex demo。
<强>详情
^
- 字符串开头[0-9]{7}
- 7位 -
- 空格,-
,空间(?![0-9]{7} - )
- 如果有7个数字,空格,-
以及紧靠当前位置右侧的空格,则会导致匹配失败的否定前瞻.*
- 任意0个字符,尽可能多