[英]Split characters in a string with a comma in javascript
我正在尝试编写一个正则表达式函数,该函数返回逗号分隔字符串中的所有数字:
function printDigits() {
var result = sentence.replace(/[^0-9]/g, '').split(",")
console.log(result)
}
但它只是打印出一个字符串,而不是用逗号分隔的数字。 有什么办法可以解决这个问题吗?
输入:“5om3 wr173 w0rd5 u51n9 numb3r5。”
预期输出:“5,3,1,7,3,0,5,5,1,9,3,5”
split
不是这样工作的。 它按输入中已有的分隔符进行拆分。 要将字符串拆分为单个字符,请使用split('')
,然后用逗号连接单个字符:
var result = sentence.replace(/[^0-9]/g, '').split('').join(',');
您可以使用
sentence.match(/\d/g).join(",")
这里,
sentence.match(/\\d/g)
- 从字符串中提取每个单独的数字.join(",")
- 将数组项连接成一个逗号分隔的字符串。请参阅 JavaScript 演示:
var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5."; console.log(sentence.match(/\\d/g).join(",")); // -> 5,3,1,7,3,0,5,5,1,9,3,5
这是另一个使用纯正则表达式并且不需要.join()
调用的变体:
sentence.replace(/\D+|(\d)(?=\d)/g, '$1,');
这将用逗号替换任何非数字字符字符串。 它还会定位两个数字之间的位置并在它们之间添加一个逗号。
模式分解:
\\D+
- 匹配一个或多个非数字字符。|
- 要么...(\\d)
- 匹配一位数字并将其捕获在第 1 组中。(?=\\d)
- 后跟另一个数字。$1,
- 替换$1,
组中捕获的任何内容,加上一个逗号。这是一个完整的演示:
var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5"; var result = sentence.replace(/\\D+|(\\d)(?=\\d)/g, '$1,'); console.log(result); // 5,3,1,7,3,0,5,5,1,9,3,5
减速机解决方案
const x = `5om3 wr173 w0rd5 u51n9 numb3r5` .split('') .reduce((acc, val) => val.trim().length && !isNaN(+val) ? [...acc, +val] : acc, []); console.log(`${x}`);
或者干脆
console.log(`${`5om3 wr173 w0rd5 u51n9 numb3r5`.match(/\\d/g)}`);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.