我是一个允许字符串为空的正则表达式。如果它不是空的,则字符串可能只包含字母和空格。但它可能无法以空格开始或结束。
这个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();
}
如何更改我的代码以便允许空字符串?
答案 0 :(得分:14)
请尝试使用此代码:
pattern = /(^[a-zA-Z]+(\s*[a-zA-Z]+)*$)|(^$)/;
它将测试空字符串或测试以a-Z开头的字符串,并且字符串中可能包含无限量的空格但必须以a-Z结尾。
您可以在此处看到它:http://jsfiddle.net/BAXya/
答案 1 :(得分:0)
还可以使用:
if (subject.match(/^(?=[a-z ]*$)(?=\S)(?=.*\S$)/i)) {
// Successful match
}
仅使用前瞻。虽然我会跟@Marcus一起回答。