diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids
index 590e6dac45..c27e81cd33 100644
--- a/core/language/en-GB/Misc.multids
+++ b/core/language/en-GB/Misc.multids
@@ -5,6 +5,7 @@ ClassicWarning/Upgrade/Caption: upgrade
CloseAll/Button: close all
ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<
>/>"?
ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<>/>"?
+InvalidFieldName: Illegal characters in field name "<$text text=<>/>". Fields can only contain lowercase letters and the characters underscore (`_`), hyphen (`-`) and period (`.`)
MissingTiddler/Hint: Missing tiddler "<$text text=<>/>" - click {{$:/core/images/edit-button}} to create
RecentChanges/DateFormat: DDth MMM YYYY
RelativeDate/Future/Days: <> days from now
diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js
index aeeb66b809..cb9dc82c8b 100644
--- a/core/modules/widgets/fieldmangler.js
+++ b/core/modules/widgets/fieldmangler.js
@@ -71,10 +71,20 @@ FieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {
};
FieldManglerWidget.prototype.handleAddFieldEvent = function(event) {
- var tiddler = this.wiki.getTiddler(this.mangleTitle);
+ var tiddler = this.wiki.getTiddler(this.mangleTitle),
+ fieldValidatorRegEx = /^[a-z\-\._]+$/mg;
if(tiddler && typeof event.param === "string") {
var name = event.param.toLowerCase();
if(name !== "" && !$tw.utils.hop(tiddler.fields,name)) {
+ if(!fieldValidatorRegEx.test(name)) {
+ alert($tw.language.getString(
+ "InvalidFieldName",
+ {variables:
+ {fieldName: name}
+ }
+ ));
+ return true;
+ }
var addition = this.wiki.getModificationFields();
addition[name] = "";
this.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));