diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids
index 0718b08b8..0890424a5 100644
--- a/core/language/en-GB/Misc.multids
+++ b/core/language/en-GB/Misc.multids
@@ -7,7 +7,7 @@ ConfirmCancelTiddler: Do you wish to discard changes to the tiddler "<$text text
ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<
>/>"?
ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<>/>"?
ConfirmEditShadowTiddler: You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit "<$text text=<>/>"?
-InvalidFieldName: Illegal characters in field name "<$text text=<>/>". Fields can only contain lowercase letters and the characters underscore (`_`), hyphen (`-`) and period (`.`)
+InvalidFieldName: Illegal characters in field name "<$text text=<>/>". Fields can only contain lowercase letters, digits 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/utils/utils.js b/core/modules/utils/utils.js
index 5a01fd387..0ed21f88c 100644
--- a/core/modules/utils/utils.js
+++ b/core/modules/utils/utils.js
@@ -413,6 +413,18 @@ exports.parseTextReference = function(textRef) {
}
};
+/*
+Checks whether a string is a valid fieldname
+*/
+exports.isValidFieldName = function(name) {
+ if(!name || typeof name !== "string") {
+ return false;
+ }
+ name = name.toLowerCase().trim();
+ var fieldValidatorRegEx = /^[a-z0-9\-\._]+$/mg;
+ return fieldValidatorRegEx.test(name);
+};
+
/*
Extract the version number from the meta tag or from the boot file
*/
diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js
index d902e755a..afb60b577 100644
--- a/core/modules/widgets/fieldmangler.js
+++ b/core/modules/widgets/fieldmangler.js
@@ -71,12 +71,11 @@ FieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {
};
FieldManglerWidget.prototype.handleAddFieldEvent = function(event) {
- var tiddler = this.wiki.getTiddler(this.mangleTitle),
- fieldValidatorRegEx = /^[a-z\-\._]+$/mg;
+ var tiddler = this.wiki.getTiddler(this.mangleTitle);
if(tiddler && typeof event.param === "string") {
var name = event.param.toLowerCase().trim();
if(name !== "" && !$tw.utils.hop(tiddler.fields,name)) {
- if(!fieldValidatorRegEx.test(name)) {
+ if(!$tw.utils.isValidFieldName(name)) {
alert($tw.language.getString(
"InvalidFieldName",
{variables: