给定字符串,例如:
foo/**hello**/baré
foo/crazy/**hello**/baré
**hello**/crazy/baré
对于每一行,如何通过JS隔离hello
(**
之间的文字)?(正则表达式?搜索)
(每行所需的输出为hello
)
到目前为止,我在那里失败了:.*?\*\*(.*?)\*\*.*?
=> $1
给了我:
hello/baré
hello/baré
hello/crazy/baré
答案 0 :(得分:3)
您可以使用与*:
之外的任何字符匹配的表达式
const inputs = [
'foo/**hello**/baré',
'foo/crazy/**hello**/baré',
'**hello**/crazy/baré'
];
inputs.forEach(input => {
const matches = input.match(/.*\*\*([^*]+)\*\*.*/);
console.log(matches[1]);
});
答案 1 :(得分:2)
单词,只需使用\w
:
\*+(\w+)\*+
如果您想要专门2 *
,请执行
\*{2}(\w+)\*{2}
如果您有句子或段落或混合字符,请搜索起始和结束分隔符以外的字符:
\*{2}([^*]+)\*{2}