diff --git a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java
index ee21abf..274c5a9 100755
--- a/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java
+++ b/bundles/org.eclipse.wst.jsdt.nodejs.core/src/main/java/org/eclipse/wst/jsdt/nodejs/core/api/semver/Range.java
@@ -29,8 +29,8 @@
 	 * values in this array matters!!! /!\.
 	 */
 	private static final ConstraintKind[] constraintKinds = new ConstraintKind[] {
-			ConstraintKind.GREATER_THAN_OR_EQUALS_TO, ConstraintKind.GREATER_THAN, ConstraintKind.EQUALS_TO,
-			ConstraintKind.LOWER_THAN_OR_EQUALS_TO, ConstraintKind.LOWER_THAN };
+		ConstraintKind.GREATER_THAN_OR_EQUALS_TO, ConstraintKind.GREATER_THAN, ConstraintKind.EQUALS_TO,
+		ConstraintKind.LOWER_THAN_OR_EQUALS_TO, ConstraintKind.LOWER_THAN };
 
 	/**
 	 * The list of constraints of the range.
@@ -70,14 +70,31 @@
 			String nextToken = tokenizer.nextToken();
 			nextToken = nextToken.trim();
 
+			ConstraintKind constraint = null;
+
 			for (ConstraintKind constraintKind : Range.constraintKinds) {
 				if (nextToken.startsWith(constraintKind.getLabel())) {
-					Version version = Version.fromString(nextToken.substring(constraintKind.getLabel()
-							.length()));
-					range.addVersionedConstraint(new VersionedConstraint(version, constraintKind));
+					constraint = constraintKind;
 					break;
 				}
 			}
+
+			if (constraint != null) {
+				Version version = Version.fromString(nextToken.substring(constraint.getLabel().length()));
+				range.addVersionedConstraint(new VersionedConstraint(version, constraint));
+			} else {
+				// Test to see if we have an exact version only
+				Version version = null;
+				try {
+					version = Version.fromString(nextToken);
+				} catch (IllegalArgumentException e) {
+					// do nothing
+				}
+
+				if (version != null) {
+					range.addVersionedConstraint(new VersionedConstraint(version, ConstraintKind.EQUALS_TO));
+				}
+			}
 		}
 
 		return range;
diff --git a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java
index 266cda9..d247077 100644
--- a/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java
+++ b/tests/org.eclipse.wst.jsdt.nodejs.core.tests/src/main/java/org/eclipse/wst/jsdt/nodejs/core/tests/internal/semver/RangeTests.java
@@ -49,6 +49,9 @@
 		assertTrue(Version.fromString("1.0.0").isIn(Range.fromString("=v1"))); //$NON-NLS-1$ //$NON-NLS-2$
 
 		// invalid
+		assertFalse(Version.fromString("1.0.1").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+		assertFalse(Version.fromString("1.1.0").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
+		assertFalse(Version.fromString("2.0.0").isIn(Range.fromString("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
 		assertFalse(Version.fromString("1.0.1").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
 		assertFalse(Version.fromString("0.9.9").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
 		assertFalse(Version.fromString("1.0.0-beta").isIn(Range.fromString("=1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
