我需要一个正则表达式来检查输入是否最多25个字符,并且有两个字符串(名字和姓氏)用空格字符分隔。 到目前为止,我有这个,
var name=$('#name').val();
var namePattern = /^[\sA-Za-z]{25}$/;
if(namePattern.test(name))
{
return true;
}
答案 0 :(得分:5)
为什么要使用正则表达式?
if (name.length < 26 && name.indexOf(' ') > 1) {
// the name's 25 characters or less
// there's at least one character before the space
}
这显然是一个JavaScript实现,但这是因为您的问题附有php 和 javascript。
对于'Bruce'传递验证的问题,使用您分配给$.trim()
变量的字符串上的name
函数,以及上的split()
变量,将防止误报。给出以下HTML:
<ul>
<li>Bruce</li>
<li>Bruce </li>
<li>Bruce Wayne</li>
<li>Brucewayne</li>
</ul>
使用以下内容,因为您使用jQuery标记了问题:
$('li').addClass(function(){
var name = $.trim($(this).text());
return name.length < 26 && name.split(/\s+/).length > 1 ? 'pass' : 'fail';
});
答案 1 :(得分:0)
此表达式将:
'
。当然你认为有效的名字对你来说真的很重要。请注意[a-z]
不会验证重音字符
^(?=\s*\S[^\r\n]{0,23}\S\s*\Z)\s*([a-z-']+)\s([a-z-']+)\s*\Z
现场演示:http://www.rubular.com/r/j9jfyJrIqP
示例文字
请注意,在实例和此示例文本中,有前导和尾随空格。
Mc'David Johnson-Smith
捕获论坛
[0][0] = Mc'David Johnson-Smith
[0][2] = Mc'David
[0][3] = Johnson-Smith