diff --git a/src/commentscan.l b/src/commentscan.l
index 3546277..406d966 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -920,7 +920,7 @@ FILEECHAR [a-z_A-Z0-9\x80-\xFF\-\+@&#]
FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]*"\"")
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
-CITESCHAR [a-z_A-Z\x80-\xFF]
+CITESCHAR [a-z_A-Z0-9\x80-\xFF]
CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
CITEID {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index 31d583c..efc058a 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -334,7 +334,7 @@ BLANK [ \t\r]
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
PHPTYPE [\\:a-z_A-Z0-9\x80-\xFF\-]+
-CITESCHAR [a-z_A-Z\x80-\xFF]
+CITESCHAR [a-z_A-Z0-9\x80-\xFF]
CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
CITEID {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
MAILADR ("mailto:")?[a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+
diff --git a/src/cite.cpp b/src/cite.cpp
index 2ea6300..3125f35 100644
--- a/src/cite.cpp
+++ b/src/cite.cpp
@@ -226,13 +226,13 @@ void CiteDict::generatePage() const
else if (insideBib) doc+=line+"\n";
int i;
// determine text to use at the location of the @cite command
- if (insideBib && (i=line.find("<a name=\"CITEREF_"))!=-1)
+ if (insideBib && (i=line.find("name=\"CITEREF_"))!=-1)
{
int j=line.find("\">[");
int k=line.find("]</a>");
if (j!=-1 && k!=-1)
{
- QCString label = line.mid(i+17,j-i-17);
+ QCString label = line.mid(i+14,j-i-14);
QCString number = line.mid(j+2,k-j-1);
CiteInfo *ci = m_entries.find(label);
//printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci);