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

时间:2015-03-21 15:24:27

标签: javascript regex

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

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

"string1,string2"
  

条件:

     

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)

1 个答案:

答案 0 :(得分:4)

  
      
  1. string1和string2都只能包含字母。
  2.   
[a-zA-Z]

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

  
      
  1. string1和string2长度不得超过20
  2.   
  3. string1和string2不能为空
  4.   
[a-zA-Z]{1,20}

这意味着,匹配最小1和最多20个字母。

  
      
  1. 只能出现2个字符串(string1,string2,string应无效)
  2.   
/^[a-zA-Z]{1,20},[a-zA-Z]{1,20}$/

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


您可以检查RegEx是否适用于问题中提到的所有输入,例如

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);
});