【问题标题】:regex for comma separated string (2 strings separated by comma)逗号分隔字符串的正则表达式(用逗号分隔的 2 个字符串)
【发布时间】:2015-03-21 15:24:26
【问题描述】:

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

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

"string1,string2"

条件:

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

示例 ::

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)

【问题讨论】:

  • 你能举出你想匹配和不匹配的字符串的例子吗?
  • @vivek,有很多正则表达式生成器,您只需要一些基本的谷歌搜索技能。

标签: javascript regex


【解决方案1】:
  1. string1 和 string2 都只能包含字母。
[a-zA-Z]

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

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

意思是,匹配最少1个最多20个字母。

  1. 只能存在2个字符串(字符串1、字符串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);
});

【讨论】:

  • 谢谢,你拯救了我的一天。会接受这个作为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多