gpt4 book ai didi

javascript - 正则表达式最多提供 2 个空格

转载 作者:行者123 更新时间:2023-11-28 18:49:57 25 4
gpt4 key购买 nike

我必须在 JavaScript 中编写一个正则表达式来满足以下条件

a) accept only alphabetic characters(small/caps)
b) should not exceed beyond 20 characters
c) max 2 spaces can be provided.

有效的测试用例

a) Name
b) name
c) namea nameb
d) namea nameb namecd
e) namea nameb (2 consecutive spaces is also valid but total number of spaces cannot be more than 2)

我的尝试(但没有成功)

function test(){

var originalString="abc rt t tt";
var myRegEx = /^([a-zA-Z ]{1,20})+$/;
var isValid = myRegEx.test(originalString);
alert(isValid);
}

错误是什么以及如何修复?

最佳答案

正则表达式 /^([a-zA-Z ]{1,20})+$/将匹配一到二十个字母和/或空格一次或多次。因此,基本上这允许字母和空格以任何顺序出现任意次数。

<小时/>

你可以使用

^[a-zA-Z]+(\s[a-zA-Z]*){0,2}$

Demo

var regex = /^[a-zA-Z]+(\s[a-zA-Z]*){0,2}$/;

var result = document.getElementById('result');
document.getElementById('text').addEventListener('keyup', function(e) {
var value = this.value;

var isValid = value.length <= 20 && regex.test(value);
result.innerHTML = isValid ? 'Valid' : 'InValid';
result.className = isValid ? 'valid' : 'invalid';
}, false);
input:valid, .valid {
color: green;
}
input:invalid, .invalid {
color: red;
}
<input id="text" pattern="[a-zA-Z]+(\s[a-zA-Z]*){0,2}" maxlength="20" />
<div id="result"></div>

说明:

  1. [a-zA-Z]+ 匹配字母一次或多次
  2. \s:匹配空格字符
  3. {0,2}:将上一类匹配零到两次。
<小时/>

要检查字符串是否不超过 20 个字符,String.length可以使用属性。

if (str.length <= 20 && regex.test(str)) {
// Valid
} else {
// Invalid
}

关于javascript - 正则表达式最多提供 2 个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34649091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com