我有这个:
const str = "hello **Tom**, it's currently **19h25**. Here is **19** things found during the **last 2 hours** by **John1**"
我需要找到内容中所有出现的内容,并在内容中带有数字的双星号包围。
我希望str.match(regex)
返回['19h25', '19', 'last 2 hours', 'john1']
。但**Tom**
除外,因为内容中没有数字。
我尝试过像/\*{2}(.*\d)\*{2}/g
这样的正则表达式,但是它不起作用。
编辑:两个*
中都没有星号**
答案 0 :(得分:2)
您可以使用
/\*{2}([^\d*]*\d[^*]*)\*{2}/g
请参见regex demo
详细信息
\*{2}
-一个**
子字符串([^\d*]*\d[^*]*)
-第1组:
[^\d*]*
-除数字和*
之外的0+个字符\d
-一个数字[^*]*
-除*
以外的0多个字符\*{2}
-一个**
子字符串JS演示:
const str = "hello **Tom**, it's currently **19h25**. Here is **19** things found during the **last 2 hours** by **John1**";
const rx = /\*{2}([^\d*]*\d[^*]*)\*{2}/g;
let m, res = [];
while (m = rx.exec(str)) {
res.push(m[1]);
}
console.log(res);
// or a one liner
console.log(str.match(rx).map(x => x.slice(2).slice(0, -2)));