正则表达式允许一个逗号而不是JavaScript中的字符串的开头或结尾

时间:2017-04-21 09:12:45

标签: javascript regex

我不是很擅长正则表达式,我需要3个不同的正则表达式,遵循以下规则:

  1. 我需要一个只允许字符串
  2. 中有一个逗号的正则表达式
  3. 我需要一个正则表达式,它不允许在字符串的开头使用逗号,但仍然只允许使用一个逗号。
  4. 我需要一个正则表达式,它不允许在字符串末尾使用逗号,但仍然只允许使用一个逗号。
  5. 对于第一条规则:List<string> employeeIDs = res.Select(x => x.Attribute("Id").Value).ToList(); 可以,但21, day不合适。

    对于第二条规则:21, day, 32不合适。

    对于第三条规则:,21不合适。

    到目前为止,我已经创建了一个适用于上述规则的正则表达式,但我想知道它是否可以分成三个不同的正则表达式,以适应上述三个规则。

    21,

    非常感谢任何帮助。 感谢

5 个答案:

答案 0 :(得分:4)

  1. 只允许使用一个逗号(如果要使逗号可选,请​​将?置于第二个逗号后面):

    ^[^,]*,[^,]*$
    
  2. 只允许一个逗号但开头没有逗号:

    ^[^,]+,[^,]*$
    
  3. 最后只允许一个逗号,但最后只允许一个逗号:

    ^[^,]*,[^,]+$
    
  4. [^,]表示“不是逗号的字符”。

答案 1 :(得分:0)

这个正则表达式应该可以胜任。

^[^,]+,[^,]+$

说明:

[^,]+ - &gt;至少一次不逗号

, - &gt;逗号(显然)

[^,]+ - &gt;不要逗号至少一次(再次)

答案 2 :(得分:0)

  1. ^(?!.*,.*,) - 这是拒绝重复逗号的基础正则表达式。
  2. ^(?!,)(?!.*,.*,) - 相同的基础,添加了&#34;开头没有逗号&#34;条件
  3. ^(?!.*,.*,).*(?:[^,]|^)$ - 与#34相同的基础;最后没有逗号&#34;。后者实现为交替组匹配,因为JavaScript中没有lookbehinds。
  4. 注意:所有这些模式在输入中都允许使用零个或一个逗号。如果您严格需要一个逗号,请在每个逗号前添加^(?=.*,)

答案 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)

简单表达式就像 - ^ [^,] +,[^,] + $