获取用逗号、分号或句点分隔的数字



我需要用逗号、分号或点分隔的数字

输入字符串可以是

1234567812345678

12345678.1234567812345678;12345678

分隔符之前或之后可能有空格

12345678、12345678。12345678;12345678

数字之间可能有空格

1234 5678.12 345678123 45678;12 3456 78

输出应始终为

1234567812345678 12345678

如果我能检查这个数字是否有8位,那就太好了

到目前为止,我有这个正则表达式

[0-9]+(,[0-9]+

Javascript 需要它

感谢的建议

如果您想用可选空格检查8位数字,您可以将8位数字与中间的可选空格进行匹配,并使用正向前瞻在右侧断言逗号、分号或句点。

bd(?: *d){7}(?= *[,;.]|$)

模式匹配:

  • bd单词边界,匹配个位数
  • (?: *d){7}匹配可选空格重复7次,匹配一个数字,共8个
  • (?= *[,;.]|$)正向前瞻以断言可选空间以及字符串右侧或末尾的,;.

Regex演示

然后,在match生成的数组中,可以删除空格并用空格连接数组。

const regex = /bd(?: *d){7}(?= *[,;.]|$)/g;
const strings = [
"12345678,12345678,12345678",
"12345678.12345678,12345678;12345678",
"12345678 , 12345678 . 12345678 ; 12345678",
"1234 5678 .12 345678, 123 45678 ;12 3456 78"
].forEach(s => {
const res =
s.match(regex)
.map(i => i.replace(/s+/g, ''))
.join(" ");
console.log(res);
})

首先,您需要从中删除空间。类似:

var str = "1234  5678 .  123 45678 , 1 2345678 ; 12 345678"
var patt1 = /s/g; //regex for space
var result = str.replace(patt1 , "");

删除空格后,可以替换逗号、句点和分号。类似:

var patt2 = /[.;:]/g; //regex for replace comma, semicolon, and dot with space
var output = result.replace(patt2," ");

最新更新