Javascript React.js RegExp始终返回false

Javascript React.js RegExp始终返回false,javascript,reactjs,Javascript,Reactjs,我有这个代码来检查我的字段是否都可以使用。我的后端已经启动并工作,但我正在努力检查react方法中的正则表达式。我所做的只是在regex101中创建了一个regex,然后将其用于输入模式,但我想将其更改为方法。所以基本上正则表达式总是返回false // Then check regex const regInput = new RegExp( '^(?:(?:IT|SM)d{2}[A-Z]d{22}|CYd{2}[A-Z]d{23}|NLd{2}[A-Z]{4}d{10}|LVd{2}[A

我有这个代码来检查我的字段是否都可以使用。我的后端已经启动并工作,但我正在努力检查react方法中的正则表达式。我所做的只是在regex101中创建了一个regex,然后将其用于输入模式,但我想将其更改为方法。所以基本上正则表达式总是返回false

// Then check regex
const regInput = new RegExp(
  '^(?:(?:IT|SM)d{2}[A-Z]d{22}|CYd{2}[A-Z]d{23}|NLd{2}[A-Z]{4}d{10}|LVd{2}[A-Z]{4}d{13}|(?:BG|BH|GB|IE)d{2}[A-Z]{4}d{14}|GId{2}[A-Z]{4}d{15}|ROd{2}[A-Z]{4}d{16}|KWd{2}[A-Z]{4}d{22}|MTd{2}[A-Z]{4}d{23}|NOd{13}|(?:DK|FI|GL|FO)d{16}|MKd{17}|(?:AT|EE|KZ|LU|XK)d{18}|(?:BA|HR|LI|CH|CR)d{19}|(?:GE|DE|LT|ME|RS)d{18}|ILd{21}|(?:AD|CZ|ES|MD|SA)d{22}|PTd{23}|(?:BE|IS)d{24}|(?:FR|MR|MC)d{25}|(?:AL|DO|LB|PL)d{26}|(?:AZ|HU)d{27}|(?:GR|MU)d{28})$'
);

if (!regInput.test(this.state.iban)) {
  this.setState({
    error: true,
    errorMsg:
      'Sąskaitsssos numeris įvestas klaidingai, bandykite dar kartą',
  });
  console.log('error');
  return;
} else {
  console.log('LT597300010145601329');
}

似乎你的正则表达式就是问题所在。如果要使用模式2字母后跟18位数字,可以尝试以下正则表达式:

^[\w]{2}[\d]{18}$

以下是用于输入的
regex
:LT597300010145601329

尝试:

注意:如果只需要大写字母,则:
[A-Z]{2}\d{18}

根据

IBAN或国际银行账号以两位数的国家代码开头,然后是两个数字,然后是几个字母数字字符。

您可以使用以下正则表达式:

^[a-zA-Z]{2}[\d]{2}[a-zA-Z0-9]{14,20}$
简而言之,它接受一个值,该值包含2个字母(不考虑大小写),后跟2个数字,后跟14-20个字符的字母数字字符(如果您有关于图案的更多详细信息,可以更改长度约束)


详细说明: 匹配下面列表中的单个字符[a-zA-Z]

  • {2} 与上一个标记正好匹配2次
  • a-z匹配a(索引97)和z(索引122)之间范围内的单个字符(区分大小写)
  • A-Z匹配A(索引65)和A之间范围内的单个字符 Z(索引90)(区分大小写)
匹配下面列表中的单个字符[\d]

  • {2} 与上一个标记正好匹配2次

  • \d匹配一个数字(相当于[0-9])

匹配下面列表中的单个字符[a-zA-Z0-9]

  • {14,20}匹配前一个标记的次数为14到20倍 尽可能多次,根据需要回馈(贪婪)

  • $断言行末尾的位置


我认为这个正则表达式有点难以调试。你想在正则表达式上传递什么?这里的用例是什么?我传递这个LT597300010145601329So 2个字母字符,后跟18位数字?这是没有例外的用例吗?它的IBAN代码,我在网上找到了这个正则表达式。你能回答这个问题吗?你要使用的所有IBAN代码都有相同的模式吗?
^[a-zA-Z]{2}[\d]{2}[a-zA-Z0-9]{14,20}$