Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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,我想捕获符合以下条件的字符串: 可能是空的 如果不为空,则最多必须有三位数字(->\d{1,3}) 可以选择后跟大写字母([a-Z]?) 可以选择后跟正斜杠(即/)(>\/?);如果后跟正斜杠,则必须有1到3位数字 (>\d{1,3}) 以下是一个有效的输入: 三十五 35A 35A/44 这是无效的输入: 34/(注意“/”后面没有数字) 我得到了以下满足条件1-3的结果。我如何处理4个条件?我的正则表达式有两次失败: 当有一个数字、正斜杠和一个数字(例如,77A/7 匹配,但当有一

我想捕获符合以下条件的字符串:

  • 可能是空的

  • 如果不为空,则最多必须有三位数字(->
    \d{1,3}

  • 可以选择后跟大写字母(
    [a-Z]?
  • 可以选择后跟正斜杠(即
    /
    )(>
    \/?
    );如果后跟正斜杠,则必须有1到3位数字 (>
    \d{1,3}
  • 以下是一个有效的输入:

    • 三十五
    • 35A
    • 35A/44
    这是无效的输入:

    • 34/(注意“/”后面没有数字)
    我得到了以下满足条件1-3的结果。我如何处理4个条件?我的正则表达式有两次失败:

    • 当有一个数字、正斜杠和一个数字(例如,
      77A/7
    • 匹配,但当有一个数字和正斜杠时不应匹配,例如
      77/
    您可以使用

    /^(?:\d{1,3}[A-Z]?(?:\/\d{1,3})?)?$/
    

    详细信息

    • ^
      -字符串的开头
    • (?:\d{1,3}[A-Z]?(?:\/\d{1,3})?
      -可选的非捕获组:
      • \d{1,3}
        -一到三位数字
      • [A-Z]?
        -可选大写ASCII字母
      • (?:\/\d{1,3})
        -可选的非捕获组:
        • \/
          -a
          /
          字符
        • \d{1,3}
          -1到3位数字
    • $
      -字符串结束
    可视图形(已生成):


    这应该行得通。你匹配了一个可选的斜杠,然后是一个可选的数字,从1到3;这匹配斜杠和任意数字的1-3的可选组合。此外,您的原始正则表达式可以在开始时匹配0位数字;我相信这是错误的,所以我修正了

    var regex=/^(\d{1,3}[A-Z]{0,1}(\/\d{1,3})?$/g;
    console.log(“77A/7-”+!!(“77A/7”).match(regex));
    console.log(“77/-”+!!(“77/”).match(regex));
    console.log(“35-”+!!(“35”).match(regex));
    console.log(“35A-”+!!(“35A”).match(regex));
    console.log(“35A/44-”+!!(“35A/44”).match(regex));
    console.log(“35/44-”+!!(“35/44”).match(regex));
    console.log(“34/-”+!!(“34/”).match(regex));
    console.log(“A/3-”+!!(“A/3”).match(regex));
    
    log(“[无字符串]-”+!!(”).match(regex))它会起作用。请您更详细地讨论一下您的解决方案好吗?