我不是很擅长正则表达式,我需要3个不同的正则表达式,遵循以下规则:
对于第一条规则:List<string> employeeIDs = res.Select(x => x.Attribute("Id").Value).ToList();
可以,但21, day
不合适。
对于第二条规则:21, day, 32
不合适。
对于第三条规则:,21
不合适。
到目前为止,我已经创建了一个适用于上述规则的正则表达式,但我想知道它是否可以分成三个不同的正则表达式,以适应上述三个规则。
21,
非常感谢任何帮助。 感谢
答案 0 :(得分:4)
只允许使用一个逗号(如果要使逗号可选,请将?
置于第二个逗号后面):
^[^,]*,[^,]*$
只允许一个逗号但开头没有逗号:
^[^,]+,[^,]*$
最后只允许一个逗号,但最后只允许一个逗号:
^[^,]*,[^,]+$
[^,]
表示“不是逗号的字符”。
答案 1 :(得分:0)
这个正则表达式应该可以胜任。
^[^,]+,[^,]+$
说明:
[^,]+
- &gt;至少一次不逗号
,
- &gt;逗号(显然)
[^,]+
- &gt;不要逗号至少一次(再次)
答案 2 :(得分:0)
^(?!.*,.*,)
- 这是拒绝重复逗号的基础正则表达式。^(?!,)(?!.*,.*,)
- 相同的基础,添加了&#34;开头没有逗号&#34;条件^(?!.*,.*,).*(?:[^,]|^)$
- 与#34相同的基础;最后没有逗号&#34;。后者实现为交替组匹配,因为JavaScript中没有lookbehinds。注意:所有这些模式在输入中都允许使用零个或一个逗号。如果您严格需要一个逗号,请在每个逗号前添加^(?=.*,)
。
答案 3 :(得分:0)
简单的字符串操作可以处理这个问题:
function testForComma(str) {
//Comma isn't first character
//Comma only exists once
//Comma isn't last character
return str.indexOf(',') >= 1 &&
str.lastIndexOf(',') == str.indexOf(',') &&
str.lastIndexOf(',') != str.length - 1;
}
console.log(testForComma(','));
console.log(testForComma(', '));
console.log(testForComma(' ,'));
console.log(testForComma(' , '));
console.log(testForComma(' ,, '));
答案 4 :(得分:0)
简单表达式就像 - ^ [^,] +,[^,] + $