我有一个问题要问你,我自己似乎无法弄清楚。
假设我想验证用户的名字。有些可以包含多个部分,例如“John William”,中间有一个空格。我想要做的是将输入匹配到一个正则表达式,该表达式找出名称是否在开头或结尾包含任何空格。
此外,正则表达式应该检查名称中是否只有字母(az,小写和大写)。
到目前为止,这是我想出的:
/^\s+[A-z]+|[A-z]+\s+$/
但不知何故,这个正则表达式不会注意到任何其他字符(如破折号、下划线、& 符号等)。基本上它所做的只是告诉我输入的开头或结尾是否有空格。
有谁可以帮我离开这里吗?
编辑:
这是我正在使用的完整代码:
$(document).ready(function() {
$('#firstname, #lastname').bind('keyup blur', function() {
var _input = $(this);
var _illegal = Validate_Regexp(_input.val(), /^\s+[A-Za-z]+|[A-Za-z]+\s+$/);
if (_illegal == true) {
$("#"+_input.attr('id')+".validator").css({
'background-image' : 'url(./images/icons/bullet_red.png)',
});
} else {
$("#"+_input.attr('id')+".validator").css({
'background-image' : 'url(./images/icons/bullet_green.png)',
});
}
});
});
function Validate_Regexp($value, $regexp) {
return $regexp.test($value);
}
编辑2:
我同意查理的回答,但是他的回答迫使我有两个部分的名字,而不是我想要的。
我将代码更改为:
var isLegal = /^[a-zA-Z]+(\s+[a-zA-Z]+)?$/.test(stringToTest);
到:
var isLegal = /^[a-zA-Z]+(\s[a-zA-Z]+)*?$/.test(stringToTest);