正则问题,sos,SOS

问题遇到的现象和发生背景

简单说一下需求啊,就是我现在有一个文本框,我需要从excel上直接粘单号到这上面,所以要求是纯数字,但是从excel上粘过来的数据会带换行符,我需要一个能识别纯数字加换行符的正则,在网上找半天没找到。

用代码块功能插入代码,请勿粘贴截图

我的解答思路和尝试过的方法

网上找了一圈没找到

你的目的验证 ,一句话就也行吧,js没法多行匹配再验证,所以你在网上找不到,你看这个能不能满足你的要求

function test(data) {
    return data.split('\n').every(item => /^\d*$/.test(item));
}

let data = 'aaaa bbbb ccc fadfs \n fasdfs\nsdafsaf\n'
console.log(data)
console.log(test(data))

data = '123456 \n 2222\n4444\n'
console.log(data)
console.log(test(data))


data = '123456\n2222\n4444\n'
console.log(data)
console.log(test(data))

组件设置type为数字不行吗

首先你的需求是 想判断从excel上粘过来的数据 是否符合纯数字,然后给出提示?还是说把excel上粘过来的数据的格式化,只保留数字?
判断是否是纯数字: /^\d{1,}$/ /^\d{1,}$/.test(123) // true
把数据摘出来拼成纯数字

let str = '1234455566dfasdfasd32324234'
    function getNumber(str) {
      let newStr = ''
      for(let i=0;i<str.length;i++) {
        if(/^\d{1,}$/.test(str[i]) ) {
          newStr+=str[i]
          continue
        }
      }
      return newStr
    }
    getNumber(str)

建议最好从源头修正,在excel中使用自动换行替换掉alt+enter软回车。
在excel中应该是有字段使用alt+enter做了软回车,赋值到外部显示数据中包含了一个回车(char(10))。
下图中56为单元自动换行,789是alt+enter软换行,复制粘到其它应用是下面结果,56正常,789有换行。
1234567890123456
789

img