我不擅长正则表达式,我正在寻找 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)
- string1 和 string2 都只能包含字母。
[a-zA-Z]
Run Code Online (Sandbox Code Playgroud)
用于-表示字符类中的范围。这里我们说,它可以是aandz或Aand之间的任何字母Z。
- string1和string2的长度都不能超过20
- string1 和 string2 不能为空
[a-zA-Z]{1,20}
Run Code Online (Sandbox Code Playgroud)
这意味着,匹配最少 1 个、最多 20 个字母。
- 只能出现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)
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |