正则表达式,检查输入是否最多25个字符长并且有空格?

时间:2013-07-19 20:48:47

标签: javascript jquery regex

我需要一个正则表达式来检查输入是否最多25个字符,并且有两个字符串(名字和姓氏)用空格字符分隔。 到目前为止,我有这个,

var name=$('#name').val();
var namePattern = /^[\sA-Za-z]{25}$/;

if(namePattern.test(name))
{
return true;
}

2 个答案:

答案 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实现,但这是因为您的问题附有

对于'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';
});

JS Fiddle demo

答案 1 :(得分:0)

描述

此表达式将:

  • 验证字符串长度最多为25个字符
  • 跳过任何前导或尾随空格
  • 中间需要1个空格字符
  • 将名字和姓氏捕获到两个单独的捕获组中
  • 允许在名称中使用带连字符和'。当然你认为有效的名字对你来说真的很重要。请注意[a-z]不会验证重音字符

^(?=\s*\S[^\r\n]{0,23}\S\s*\Z)\s*([a-z-']+)\s([a-z-']+)\s*\Z

enter image description here

实施例

现场演示:http://www.rubular.com/r/j9jfyJrIqP

示例文字

请注意,在实例和此示例文本中,有前导和尾随空格。

      Mc'David Johnson-Smith     

捕获论坛

[0][0] =       Mc'David Johnson-Smith     
[0][2] = Mc'David
[0][3] = Johnson-Smith