【问题标题】:regex pattern for serial-number input序列号输入的正则表达式模式
【发布时间】:2019-04-26 10:17:17
【问题描述】:

有人可以帮我,请我有一个序列号输入,我需要表达式正则表达式来验证这个输入 [例如:11-22-33333] 字符数 max=11,我添加了这个模式,但它没有工作

"pattern": "^[0-9]{2}*-?[0-9]{2}*-?[0-9]{5}$",

【问题讨论】:

  • 您的正则表达式似乎正确。您到底面临什么问题以及您使用的是什么语言?
  • 尝试删除量词后的星号,如{2}
  • 我使用 Json 语言,问题是如果我插入正确的序列号 exp: 11-22-33333 编号不被接受

标签: regex constraints check-constraints serial-number


【解决方案1】:

由于你没有指定正则表达式风格(java?bash?sed?python?php?),我这里写最兼容的表达式:

"^[0-9]{2}-[0-9]{2}-[0-9]{5}$"

https://regex101.com/r/2xGgL1/1/

希望对你有帮助

【讨论】:

  • @chaima 请访问该链接,您会看到它有效。
【解决方案2】:

鉴于您在原始模式中有这个:-?,我猜您可能想要的数字要么有两个痕迹,要么没有,因此我建议使用给定的正则表达式:

^((\d\d-){2}|(\d\d){2})\d{5}$

演示:

const regex = /^((\d\d-){2}|(\d\d){2})\d{5}$/;

const testStrings = [
  '11-22-12345',
  '112212345',
  '1122-12345',
  '11-2212345',
  '1-12-12345',
  '12-12-123456'
];

testStrings.forEach(s => console.log(`${s} - ${regex.test(s)}`));

【讨论】:

    【解决方案3】:
    "purchase-1_serialNumber": {
      "extra_form_type": "text",
      "options": {
        "label": "Indiquez le n° de série:*",
        "pattern": "^[0-9]{2}*-?[0-9]{2}*-?[0-9]{5}$",
        "required": 1,
        "disabled": "0",
        "read_only": "0",
        "attr": {
          "title": "Ce numéro est composé de 9 chiffres séparés par 2 tirets (ex: 11-22-33333) que vous trouverez sur votre produit",
          "class": "input_serie",
          "placeholder": "N° de série*",
          "minlength": 11,
          "maxlength": 11
        },
        "label_attr": {
          "class": "label_serie"
        },
        "mapped": 1
      },
      "constraints": [
        {
          "extra_form_constraint": "not_blank",
          "options": {
            "message": "Merci de renseigner le n° de série."
          }
        },
        {
          "extra_form_constraint": "regex",
          "options": {
            "pattern": "^[0-9]{2}*-?[0-9]{2}*-?[0-9]{5}$",
            "match": true,
            "message": "Merci de renseigner correctement le N° de série."
          }
        }
      ]
    }
    

    【讨论】:

    • 请编辑您的问题,而不是发布新答案。
    • @chaima attention, en français, ° signifie degré et, et n° ne peut pas être utilisé comme abréviation de numéro。 (在法语中,°表示度数,n°不能用来缩短数字)
    • @chaima json 不是实际代码,它只是数据。你的代码在哪里?
    猜你喜欢
    • 2015-10-12
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2017-05-26
    • 2012-08-13
    • 2012-03-19
    • 1970-01-01
    • 2018-10-14
    相关资源
    最近更新 更多