Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式允许一个逗号,而不是在JavaScript中字符串的开头或结尾_Javascript_Regex - Fatal编程技术网

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

正则表达式允许一个逗号,而不是在JavaScript中字符串的开头或结尾,javascript,regex,Javascript,Regex,我不太擅长正则表达式,我需要3种不同的正则表达式,它们遵循以下规则: 我需要一个只允许字符串中有一个逗号的正则表达式 我需要一个正则表达式,它不允许在字符串开头使用逗号,但仍然只允许使用一个逗号 我需要一个正则表达式,它不允许在字符串末尾使用逗号,但仍然只允许使用一个逗号 对于第一条规则:21天可以,但是21天,32天不可以 对于第二条规则:,21不合适 对于第三条规则:21,就不行了 到目前为止,我已经在下面创建了一个正则表达式,它适用于上面的规则,但我想知道它是否可以拆分为三个不同的正则表达

我不太擅长正则表达式,我需要3种不同的正则表达式,它们遵循以下规则:

  • 我需要一个只允许字符串中有一个逗号的正则表达式
  • 我需要一个正则表达式,它不允许在字符串开头使用逗号,但仍然只允许使用一个逗号
  • 我需要一个正则表达式,它不允许在字符串末尾使用逗号,但仍然只允许使用一个逗号
  • 对于第一条规则:
    21天
    可以,但是
    21天,32天
    不可以

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

    对于第三条规则:
    21,
    就不行了

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

    ^[a-z0-9A-Z&.\/'_ ]+(,[a-zA-Z0-9&.\/'_ ]+)?$
    
    任何帮助都将不胜感激。
    谢谢

    这个正则表达式应该可以完成这项工作

    ^[^,]+,[^,]+$
    
    说明:

    [^,]+
    ->至少一次不使用逗号

    ->逗号(显然)


    [^,]+
    ->至少一次(再次)不要使用逗号

    这个正则表达式应该完成这项工作

    ^[^,]+,[^,]+$
    
    说明:

    [^,]+
    ->至少一次不使用逗号

    ->逗号(显然)

    [^,]+
    ->至少一次(再次)不使用逗号

  • 只允许使用一个逗号(如果要使逗号可选,请在第二个逗号后面加一个
    ):
  • ^[^,]*,[^,]*$
    
  • 仅允许一个逗号,但开头不允许任何逗号:
  • ^[^,]+,[^,]*$
    
  • 仅允许一个逗号,但结尾不允许任何逗号:
  • ^[^,]*,[^,]+$
    
    [^,]
    表示“不是逗号的字符”

  • 只允许使用一个逗号(如果要使逗号可选,请在第二个逗号后面加一个
    ):
  • ^[^,]*,[^,]*$
    
  • 仅允许一个逗号,但开头不允许任何逗号:
  • ^[^,]+,[^,]*$
    
  • 仅允许一个逗号,但结尾不允许任何逗号:
  • ^[^,]*,[^,]+$
    
    [^,]
    表示“不是逗号的字符”

  • -这是拒绝重复使用逗号的基本正则表达式
  • -相同的基础,添加了“开始时无逗号”条件
  • -同一个基址,结尾没有逗号。后者被实现为交替组匹配,因为lookbehind在JavaScript中不可用
  • 注意:所有这些模式都允许在输入中使用零或一个逗号。如果您严格需要一个逗号,请在每个逗号前面加上
    ^(?=.*)

  • -这是拒绝重复使用逗号的基本正则表达式
  • -相同的基础,添加了“开始时无逗号”条件
  • -同一个基址,结尾没有逗号。后者被实现为交替组匹配,因为lookbehind在JavaScript中不可用

  • 注意:所有这些模式都允许在输入中使用零或一个逗号。如果您严格要求使用一个逗号,请在每个逗号前面加上
    ^(?=.*)

    简单的字符串操作可以处理此问题:

    函数testForComma(str){
    //逗号不是第一个字符
    //逗号只存在一次
    //逗号不是最后一个字符
    返回str.indexOf(',')>=1&&
    str.lastIndexOf(',')==str.indexOf(','))&&
    str.lastIndexOf(',')!=str.length-1;
    }
    log(testForComma(',');
    log(testForComma(',');
    log(testForComma(',');
    log(testForComma(',');
    
    log(testForComma(','))简单的字符串操作可以处理此问题:

    函数testForComma(str){
    //逗号不是第一个字符
    //逗号只存在一次
    //逗号不是最后一个字符
    返回str.indexOf(',')>=1&&
    str.lastIndexOf(',')==str.indexOf(','))&&
    str.lastIndexOf(',')!=str.length-1;
    }
    log(testForComma(',');
    log(testForComma(',');
    log(testForComma(',');
    log(testForComma(',');
    
    log(testForComma(','))简单表达式类似于-^[^,]+,[^,]+$

    简单表达式类似于-^[^,]+,[^,]+$

    示例输入和输出会很有帮助。示例输入和输出会很有帮助。*-修饰符允许匹配零字符,为什么不?他没有具体说明逗号之前或之后必须是什么。这里必须有逗号以外的东西,我明确地指定了它。对于这种情况,这是正确的方法。当逗号前面有零个字符时,逗号在开头:规则2每个正则表达式都有不同的规则,他不希望正则表达式与所有三个规则都匹配。:)哦,误解了这个问题,是的*-修饰符允许匹配零字符,为什么不?他没有具体说明逗号之前或之后必须是什么。这里必须有逗号以外的东西,我明确地指定了它。对于这种情况,这是正确的方法。当逗号前面有零个字符时,逗号在开头:规则2每个正则表达式都有不同的规则,他不希望正则表达式与所有三个规则都匹配。:)哦,我误解了这个问题,是的