diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py
index 12fcd876234448ac6bd5cd2cf38e317c4622eefd..8aabad3a6b01c67da2eb04e71c84847dd73be93c 100644
--- a/ippisite/ippidb/forms.py
+++ b/ippisite/ippidb/forms.py
@@ -1,7 +1,11 @@
 from django.forms import ModelForm,modelformset_factory,formset_factory
 from django import forms
 from django.db import models
+from django.core.exceptions import ValidationError
+from django.core.validators import RegexValidator
+
 from .models import Bibliography, Protein, ProteinDomainComplex, Ppi, PpiComplex
+from .ws import pdb_entry_exists
 
 class IdForm(ModelForm):
     class Meta:
@@ -23,8 +27,15 @@ class BibliographyForm(ModelForm):
             'journal_name': forms.TextInput(attrs={'readonly':'readonly', 'class':'readonly'}),
         }
 
+def validate_pdb_exists(value):
+    if not(pdb_entry_exists(value)):
+        raise ValidationError('PDB entry not found: %(value)s', params={'value': value}, code='invalid')
+
 class PDBForm(forms.Form):
-	pdb_id = forms.CharField(label="PDB ID",max_length=4, widget=forms.TextInput(attrs={'placeholder': 'e.g 4HHB'}))
+    pdb_id = forms.CharField(label="PDB ID",max_length=4, widget=forms.TextInput(attrs={'placeholder': 'e.g 4HHB'}), required=True, validators=[
+                RegexValidator('^[0-9][a-zA-Z0-9]{3}$', message='PDB ID must be 1 numeric + 3 alphanumeric characters'),
+                validate_pdb_exists
+             ])
 
 PDBFormSet = formset_factory(PDBForm)
 formset=PDBFormSet()