Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查输入是否最大长度为25个字符且有空格的正则表达式?_Javascript_Jquery_Regex_Php - Fatal编程技术网

Javascript 检查输入是否最大长度为25个字符且有空格的正则表达式?

Javascript 检查输入是否最大长度为25个字符且有空格的正则表达式?,javascript,jquery,regex,php,Javascript,Jquery,Regex,Php,我需要一个正则表达式来检查输入是否最多25个字符,是否有两个字符串(名字和姓氏)由空格分隔。 到目前为止我有这个 var name=$('#name').val(); var namePattern = /^[\sA-Za-z]{25}$/; if(namePattern.test(name)) { return true; } 为什么使用正则表达式 if (name.length < 26 && name.indexOf(' ') > 1) { // t

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

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

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

为什么使用正则表达式

if (name.length < 26 && name.indexOf(' ') > 1) {
    // the name's 25 characters or less
    // there's at least one character before the space
}
使用以下内容,因为您使用jQuery标记了问题:

$('li').addClass(function(){
    var name = $.trim($(this).text());
    return name.length < 26 && name.split(/\s+/).length > 1 ? 'pass' : 'fail';
});
$('li').addClass(函数(){
var name=$.trim($(this.text());
返回name.length<26&&name.split(/\s+/).length>1?'pass':'fail';
});

.

为什么要使用正则表达式

if (name.length < 26 && name.indexOf(' ') > 1) {
    // the name's 25 characters or less
    // there's at least one character before the space
}
使用以下内容,因为您使用jQuery标记了问题:

$('li').addClass(function(){
    var name = $.trim($(this).text());
    return name.length < 26 && name.split(/\s+/).length > 1 ? 'pass' : 'fail';
});
$('li').addClass(函数(){
var name=$.trim($(this.text());
返回name.length<26&&name.split(/\s+/).length>1?'pass':'fail';
});
.

说明 此表达式将:

  • 验证字符串的长度不超过25个字符
  • 跳过任何前导或尾随空格
  • 在中间中需要1个空格字符
  • 将名字和姓氏捕获到两个单独的捕获组中
  • 允许在名称中使用连字符和
    。当然,你认为一个有效的名字真的很适合你。小心,因为
    [a-z]
    不会验证重音字符

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

实例 现场演示:

示例文本

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

      Mc'David Johnson-Smith     
捕获组

[0][0] =       Mc'David Johnson-Smith     
[0][2] = Mc'David
[0][3] = Johnson-Smith
描述 此表达式将:

  • 验证字符串的长度不超过25个字符
  • 跳过任何前导或尾随空格
  • 在中间中需要1个空格字符
  • 将名字和姓氏捕获到两个单独的捕获组中
  • 允许在名称中使用连字符和
    。当然,你认为一个有效的名字真的很适合你。小心,因为
    [a-z]
    不会验证重音字符

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

实例 现场演示:

示例文本

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

      Mc'David Johnson-Smith     
捕获组

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

嗯,还有,所以我想知道OP是否知道他想要什么。嗯,好主意。但我相信,如果我输入“Bruce”,它将返回真实。我需要两条线之间的空间,修剪一下
$.trim()
不进行修剪,您可以允许正则表达式允许前导和尾随空格,并忽略它。还有,所以我想知道OP是否知道他想要什么。嗯,好主意。但我相信,如果我输入“Bruce”,它将返回真实。我需要两条线之间的空间,修剪一下
$.trim()
不进行修剪,您可以允许正则表达式允许前导和尾随空格,并忽略它。当然,我会使用@DavidThomas的解决方案,但以教授正则表达式的名义(以滋生更多问题的名义),您可能希望使用一个前瞻性断言:
/^(?=)。{1,25}$)[a-z]+\s[a-z]+$/i
。请注意,我使用了
i
修饰符来表示大小写不敏感。我当然会使用@DavidThomas的解决方案,但以教授正则表达式的名义(以滋生更多问题的名义),您可能会希望使用一个前瞻性断言:
/^=({1,25}$)[a-z]+\s[a-z]+$/i
。请注意,我使用了
i
修饰符来表示大小写不敏感。