javascript中的正则表达式,格式非常特殊

我输入的内容必须格式化用户键入的内容(实际上是来自他的银行帐户的信息)。但是数字必须以某种方式格式化:

  • 前5位数字必须是数字。

  • 如果用户键入的数字超过5个,则最后一个数字前必须带有“-”

  • 5位数字后,用户可以输入“ x”或“ X”

  • 该数字的最小值为5位数,最大值为15

例子:

  • 12345

  • 12345-1

  • 123456-1

  • 1234567-1

  • 12345-x

  • 123456789-x

  • 123456789-X

  • 12345678901234-5

实际上,我正在使用可替换字符串的规范化器。

这是我正在使用的,但我无法正确格式化。

export const normalizeBankAccount = value => {

    if (!value) {

      return value

    }


    if(value.length <= 16 && (!value.match(/[^\d|X]/g) || !value.match(/[^\d|-]/g) || !value.match(/[^\d|x]/g))) {

      if(value.length <= 5){

        return value.replace(/[^\d]/g, '')

      } else if(value.length >= 6) {

        const len = value.length;

        const aux=value;

        const initial = value.substring(0,value.length-1).replace('-', '');

        console.log("len: " +len, "\naux: " +aux,"\ninitial: "+ initial)

        return value.replace(new RegExp("\\d{"+ len +"}") , initial+ '-').replace(/[X]/g, '-X').replace(/[x]/g, '-x')

      }

    }

}

当我使用此方法时,字符串的格式如下:


12345-6789123


FFIVE
浏览 172回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript