Here is the file list
All works well except when the number preceding the dash is 3 digits

This is the current code I am using.
<cfif LEFT(filename,5) EQ 'PGHAB'>
<cfset thisNumber = REreplaceNoCase(trim(fileName),"(\w{4,5}\d{4}\w+)(\d{2,3})(-\d{1,2}?\.docx)",'\2','all') />
</cfif>
<cfif LEFT(filename,4) EQ 'PGHA'>
<cfset thisNumber = REreplaceNoCase(trim(fileName),"(\w{3,4}\d{4}\w+)(\d{2,3})(-\d{1,2}?\.docx)",'\2','all') />
</cfif>
FIXED IT. 
In the first backreference, replace \w+ with [a-z]+ and VOILA!
V/r,
^ _ ^
UPDATE: Here is the code I used for my "homework". 
<cfscript>
fileNames = [];
arrayAppend(fileNames,"PGHA2019MarchRES73-0.docx");
arrayAppend(fileNames,"PGHA2019MarchRES101-0.docx");
arrayAppend(fileNames,"PGHAB2019MarchRES101-0.docx");
arrayAppend(fileNames,"PGHAB2019MarchRES73-0.docx");
arrayAppend(fileNames,"PGHAB2019MarchRES73-0.docx");
arrayAppend(fileNames,"PGHA2019MarchRES101-0.docx");
arrayAppend(fileNames,"PGHA2019MarchRES73-0.docx");
arrayAppend(fileNames,"PGHAB2019MarchRES111-0.docx");
arrayAppend(fileNames,"PGHAB2019MarchRES73-0.docx");
arrayAppend(fileNames,"PGHAB2019MarchRES73-0.docx");
arrayAppend(fileNames,"PGHA2019MarchRES101-0.docx");
arrayAppend(fileNames,"PGHA2019MarchRES73-0.docx");
</cfscript>
<cfoutput>
<cfloop index="idx" from="1" to="#arrayLen(fileNames)#">
<cfset thisNumber = REreplaceNoCase(trim(fileNames[idx]),"^(\w{4,5}\d{4}[a-z]+)(\d{2,3})(-\d{1,2}\.docx)$","\2","all") />
#idx# - #thisNumber#<br /><br />
</cfloop>
</cfoutput>