正则表达式不捕获字符

时间:2015-04-30 19:30:36

标签: javascript regex

我希望我的正则表达式忽略字符串,如果它包含两个* s而不是一个*:

**hello**
*hello*

我的正则表达式捕获了两个*hello*。我怎样才能捕获*hello*而不是**hello**? 这是我现在的正则表达式:

\*{1}?[^\*|\s]{1,}?\*{1}?

编辑:我正在尝试做什么:
我正在制作Chrome扩展程序,将*hello*转换为 hello 并将**hello**转换为 hello 。但是,由于正则表达式使**hello***hello*重叠,因此将粗体转换为斜体。我怎么能阻止它?

3 个答案:

答案 0 :(得分:2)

执行此操作时的关键是将\*\*([^*]*)\*\*替换为<b>\1</b> ,然后\*([^*]*)\*替换为<i>\1</i>,或强/ em,css样式,无论你实际用什么来改变字体。

要覆盖嵌套在粗体标签中的i(反之则不是问题),您可以将其用于加粗正则表达式:\*\*([^*]*(\*[^*]*\*[^*]*))\*\*

答案 1 :(得分:0)

您可以使用以下内容:

[^*]\*([^\*\s]+)\*($|[^*])

请参阅DEMO

答案 2 :(得分:0)

“如果它包含”,则不需要正则表达式;试试这个:

var contains = "**hello**".indexOf("**")>=0;
// 'contains' is true if '**' exists in the string.