3

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

我试过下面的正则表达式

"^[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
4

3 回答 3

3

你错过了使X optional。做这个:

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

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

演示

对于不区分大小写,请使用以下/i标志:

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

演示

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

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

演示

积极的前瞻将根据需要限制最大长度:

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

演示

于 2019-09-13T05:07:53.233 回答
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
于 2019-09-13T05:07:59.787 回答
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

于 2019-09-13T05:13:48.440 回答