正则表达式格式用于验证

3

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

我尝试了以下正则表达式:

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

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

它们都不能满足所有条件。

所需格式:

  1. 12345(只有数字是正确的)
  2. 2753XX(数字后面跟着 X 是正确的)
  3. 542XXX45(这种格式不正确,因为 X 在数字之间)。
  4. 4654abc(这种格式不正确,因为它是字母数字混合的)

因此,我需要一个正则表达式格式,用于:

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

3
您忘了让 X 变成可选的。 请使用以下表达式: ^[0-9]{1,6}X*$ /gm 该表达式将匹配以1到6个数字开头,以零个或多个X结尾的文本。 演示链接 如果需要不区分大小写,请使用标志/i^[0-9]{1,6}X*$ /gmi 演示链接 或者,也可以使用包含大小写字母的字符集: ^[0-9]{1,6}[Xx]*$ /gm 演示链接 可以使用正向前瞻限制最大长度: ^(?=.{1,6}$)[0-9]*[Xx]*$ /gm 演示链接

但是我需要对小写字母'x'和大写字母'X'进行验证。上面的正则表达式只适用于大写字母X。 - pranab
我将其更改为“^[0-9]{1,6}Xx$”,它适用于两种情况,但需要总字符串长度为6,现在仅适用于最大数字长度为6。 - pranab
@pranab所以您希望“X”的数量也最多限制为6个? - CinCout
@pranab 我建议您编辑您的问题以添加这些要求。评论部分不是为此目的而设的。 - CinCout
1
不需要总字符串长度为6,包括x。 - pranab

3
尝试以下模式:
^(?=.{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

谢谢Tim。你能把字符串总长度加到6吗?这样它就可以处理最大长度为6的数字了。 - pranab
@pranab 我编辑了我的答案,添加了一个正向先行断言,它断言总长度不能超过6。 - Tim Biegeleisen
@TimBiegeleisen 你忘了用 $ 锚定前瞻。 - CinCout

0

对于验证,也许限制X的数量会很好,例如:

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

演示 1

或者:

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

演示 2


2
为什么 X{0,6} 中没有定义任何字符串长度的上限或 X 的上限? - Code Maniac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接