Javascript正则表达式应该允许空和非空字符串,但它不会

Ora*_*Tux 4 javascript regex

我有一个正则表达式,允许字符串为空.如果它不为空,则字符串可能只包含字母和空格.但它可能无法以空格开始或结束.

这个RegExp应该做这个工作: ^(?! )[a-zA-Z]*[a-zA-Z ]*$ 我在这里测试过:http://tools.netshiftmedia.com/regexlibrary/

但是当我在我的js中实现它时,它不允许字符串为空.

这是代码

function validatePreposition(name) {
    string = string = document.forms['form'][name].value;
    pattern = new RegExp('^(?! )[a-zA-Z]*[a-zA-Z ]*$');

    checkString(name, pattern, string);
}

function checkString(name, pattern, string) {

    if(!pattern.test(string)) {
        error[name] = 1;
    } else {
        error[name] = 0;
    }

    printErrors();
}
Run Code Online (Sandbox Code Playgroud)

如何更改我的代码以便允许空字符串?

Mar*_*cus 14

请尝试使用此代码:

pattern = /(^[a-zA-Z]+(\s*[a-zA-Z]+)*$)|(^$)/;
Run Code Online (Sandbox Code Playgroud)

它将测试空字符串或测试以aZ开头的字符串,并且可能在字符串中具有无限量的空格但必须以aZ结尾.

你可以在这里看到它:http://jsfiddle.net/BAXya/