--- webform_validation.validators.inc.old	2011-04-10 20:34:10.000000000 -0500
+++ webform_validation.validators.inc	2011-04-10 20:55:19.000000000 -0500
@@ -227,7 +227,7 @@ function webform_validation_webform_vali
       'custom_error' => TRUE,
       'custom_data' => array(
         'label' => t('Blacklisted words'),
-        'description' => t('Specify illegal words, seperated by commas. Make sure to escape reserved regex characters with an escape (\) character.')
+        'description' => t('Specify illegal words, seperated by commas.')
       ),
       'description' => t("Validates that user-entered data doesn't contain any of the specified illegal words"),
     ),
@@ -466,7 +466,12 @@ function webform_validation_webform_vali
         return $errors;
         break;
       case "blacklist":
-          $blacklist = explode(',', $rule['data']);
+          $blacklist = $rule['data'];
+          $blacklist = preg_quote($blacklist, "/"); // Escape regex control characters
+          If (PHP_VERSION < 5.3) {
+            $blacklist = preg_replace('/-/', '\-', $blacklist); // PHP bug #47229
+          }     
+          $blacklist = explode(',', $blacklist);
           $blacklist = array_map('trim', $blacklist);
           $blacklist_regex = implode('|', $blacklist);
           foreach ($items as $key => $val) {
