Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Regex 前缀数值和字母表中特定字母范围的正则表达式_Regex_String_Expression_String Matching - Fatal编程技术网

Regex 前缀数值和字母表中特定字母范围的正则表达式

Regex 前缀数值和字母表中特定字母范围的正则表达式,regex,string,expression,string-matching,Regex,String,Expression,String Matching,我需要一个正则表达式,它允许我输入一组特定的字符 正则表达式不应允许我仅输入数值,除非输入的数值是前缀为“9999” 如果它包含字母表中的任何字母pass“F”,它也不允许我输入任何数据字符串 最后,输入值的长度不应超过12个字符/位 上述情况是否可能 我有一个正则表达式,它只处理长度和数值,但我需要前缀和字母pass“F”的帮助 有效样本: 3847a654b321 3899c654b876 999946578432 999975620983 874k459m8723 546p3

我需要一个正则表达式,它允许我输入一组特定的字符

正则表达式不应允许我仅输入数值,除非输入的数值是前缀为“9999”

如果它包含字母表中的任何字母pass“F”,它也不允许我输入任何数据字符串

最后,输入值的长度不应超过12个字符/位

上述情况是否可能

我有一个正则表达式,它只处理长度和数值,但我需要前缀和字母pass“F”的帮助

有效样本:

 3847a654b321
 3899c654b876
 999946578432
 999975620983
 874k459m8723
 546p34s85734
 543216789012
 243567890218
无效样本:

 3847a654b321
 3899c654b876
 999946578432
 999975620983
 874k459m8723
 546p34s85734
 543216789012
 243567890218

希望这有帮助。

将正则表达式分为两种情况:

^(9999[0-9]{8})|((?=.*[0-9])(?=.*[a-fA-F])([a-fA-F0-9]{12}))$
 \------------/ \------------------------------------------/
       1                              2
  • 以9999开头的数值
  • 至少包含一个介于
    A
    F
    和数字之间的字符的值

  • 将正则表达式拆分为两种情况:

    ^(9999[0-9]{8})|((?=.*[0-9])(?=.*[a-fA-F])([a-fA-F0-9]{12}))$
     \------------/ \------------------------------------------/
           1                              2
    
  • 以9999开头的数值
  • 至少包含一个介于
    A
    F
    和数字之间的字符的值
  • 简明的 根据以下信息:

    • 所有数字必须以
      9999
      开头,或仅以
      a-f
      范围内的数字和字符开头
    • 最大长度为12个字符
    代码 这是您正在寻找的正则表达式:

    解释
    • 在行/字符串的开头断言位置
    • 匹配4
      9
      s,后跟任意数字的8确保前面的
      a-f
      范围内有一个字符,并确保它由
      a-f
      范围内任意数字或字符的12个组成
    • 在行/字符串末尾断言位置
    简介 根据以下信息:

    • 所有数字必须以
      9999
      开头,或仅以
      a-f
      范围内的数字和字符开头
    • 最大长度为12个字符
    代码 这是您正在寻找的正则表达式:

    解释
    • 在行/字符串的开头断言位置
    • 匹配4
      9
      s,后跟任意数字的8确保前面的
      a-f
      范围内有一个字符,并确保它由
      a-f
      范围内任意数字或字符的12个组成
    • 在行/字符串末尾断言位置

    为什么3847a654b321有效?它的前缀不是9999?,因为它不仅仅是一个数值,而且它的两个字母都在a-f之间。前缀仅在值仅为数字时适用。谢谢。这只考虑了前缀和数值,但删除了12个字符的验证。我可以输入大于12个字符的值。为什么3847a654b321有效?它的前缀不是9999?,因为它不仅仅是一个数值,而且它的两个字母都在a-f之间。前缀仅在值仅为数字时适用。谢谢。这只考虑了前缀和数值,但删除了12个字符的验证。我可以输入大于12个字符的值。