逗号分隔字符串的正则表达式(2 个字符串以逗号分隔)

Ken*_*nta 0 javascript regex

我不擅长正则表达式,我正在寻找 javascript 中以下逗号分隔字符串的正则表达式解决方案

我有一个这种格式的字符串:

"string1,string2"
Run Code Online (Sandbox Code Playgroud)

健康)状况:

1 - string1 和 string2 都只能包含字母。
2 - string1 和 string2 长度均不得超过 20
3 - string1 和 string2 不能为空
4 - 只能出现 2 个字符串(string1、string2、string 无效)

例子 ::

Edward,john = valid
Edward,  john = Invalid
12*&,john = Invalid      (shall not accept either special character or numbers)
Edward,12# = Invaid 
,          = Invalid
eeeeeeeeeeeeeeeeeeeee,jjjjjjjjjjjjjjjjjjjjj = Invalid length (more than 20)
Run Code Online (Sandbox Code Playgroud)

the*_*eye 5

  1. string1 和 string2 都只能包含字母。
[a-zA-Z]
Run Code Online (Sandbox Code Playgroud)

用于-表示字符类中的范围。这里我们说,它可以是aandzAand之间的任何字母Z

  1. string1和string2的长度都不能超过20
  2. string1 和 string2 不能为空
[a-zA-Z]{1,20}
Run Code Online (Sandbox Code Playgroud)

这意味着,匹配最少 1 个、最多 20 个字母。

  1. 只能出现2个字符串(字符串1、字符串2、字符串无效)
/^[a-zA-Z]{1,20},[a-zA-Z]{1,20}$/
Run Code Online (Sandbox Code Playgroud)

^代表字符串的开头,$代表字符串的结尾。


您可以检查正则表达式是否适用于问题中提到的所有输入,如下所示

var invalid_cases = ['Edward,  john', '12*&,john', 'Edward,12#', ',         ',
        'eeeeeeeeeeeeeeeeeeeee,jjjjjjjjjjjjjjjjjjjjj'],
    valid_cases = ['Edward,john'],
    regEx = /^[a-zA-Z]{1,20},[a-zA-Z]{1,20}$/;

valid_cases.forEach(function(currentString) {
    console.assert(regEx.exec(currentString)[0] === currentString);
});

invalid_cases.forEach(function(currentString) {
    console.assert(regEx.exec(currentString) === null);
});
Run Code Online (Sandbox Code Playgroud)