【问题标题】:Regex format for validation用于验证的正则表达式格式
【发布时间】:2019-09-13 05:03:54
【问题描述】:

我正在尝试在正则表达式中验证以下格式,但我没有成功。

我试过下面的正则表达式

"^[0-9]{1,6}X{1}$"

"^[0-9]{1,6}X$"

它不满足所有条件。

要求的格式:

  1. 12345(只有数字正确)
  2. 2753XX(带X的数字是正确的,但X必须在数字之后)
  3. 542XXX45(此格式不正确,因为 X 在数字之间)。
  4. 4654abc(此格式不正确,因为它是字母数字)

所以我需要一个正则表达式格式

  1. 字符串以数字开头
  2. 字符串以数字开头,仅以 X 结尾
  3. 字符串的最大长度为6,包括X

【问题讨论】:

    标签: regex


    【解决方案1】:

    您错过了将X 可选。 这样做:

    ^[0-9]{1,6}X*$ /gm

    这意味着文本以一到六位数字开头,以零个或多个X结尾。

    Demo

    如果不区分大小写,请使用/i 标志:

    ^[0-9]{1,6}X*$ /gmi

    Demo

    或者,您也可以使用包含大小写字母的字符集:

    ^[0-9]{1,6}[Xx]*$ /gm

    Demo

    正向预测将根据需要限制最大长度:

    ^(?=.{1,6}$)[0-9]*[Xx]*$ /gm

    Demo

    【讨论】:

    • 但我需要验证小“x”和大写“X”。以上正则表达式仅适用于大写 X
    • 我将其更改为 ^[0-9]{1,6}X*x*$ 它适用于两者但需要总字符串长度为 6 现在它仅适用于最大数字长度为 6
    • @pranab 所以你希望X 的数量也被限制为最多 6 个?
    • @pranab 我建议您编辑您的问题以添加这些要求。评论部分不适用于此目的。
    • 不,需要总字符串长度为6,包括x
    【解决方案2】:

    尝试以下模式:

    ^(?=.{1,6}$)[0-9]{1,6}X*$
    

    下面是对模式的解释:

    ^                from the start of the string
        (?=.{1,6}$)  assert that the total length is at least 1 and at most 6
        [0-9]        then match 1 to 6 digits
        X*           followed by optional X
    $                end of string
    

    【讨论】:

    • 谢谢蒂姆。您能否将总字符串长度添加到 6 现在它适用于最大数字长度到 6
    • @pranab 我通过添加一个肯定的前瞻来编辑我的答案,该前瞻断言总长度不能超过 6。
    • @TimBiegeleisen 你错过了用$ 锚定前瞻
    【解决方案3】:

    对于验证,也许限制 X 的数量就可以了,例如:

    ^[0-9]{1,6}X{0,6}$
    

    Demo 1

    或:

    ^(?:\dX{5}|\d{2}X{4}|\d{3}X{3}|\d{4}X{2}|\d{5}X|\d{6})$
    

    Demo 2

    【讨论】:

    • 为什么X{0,6}没有为字符串长度或X定义任何上限
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2012-03-15
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多