我不擅长正则表达式,我正在为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)
答案 0 :(得分:4)
- string1和string2都只能包含字母。
醇>
[a-zA-Z]
-
用于表示字符类中的范围。我们在这里说,它可以是a
和z
或A
和Z
之间的任何字母。
- string1和string2长度不得超过20
- string1和string2不能为空
醇>
[a-zA-Z]{1,20}
这意味着,匹配最小1和最多20个字母。
- 只能出现2个字符串(string1,string2,string应无效)
醇>
/^[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);
});