我希望我的正则表达式忽略字符串,如果它包含两个* s而不是一个*:
**hello**
*hello*
我的正则表达式捕获了两个*hello*
。我怎样才能捕获*hello*
而不是**hello**
?
这是我现在的正则表达式:
\*{1}?[^\*|\s]{1,}?\*{1}?
编辑:我正在尝试做什么:
我正在制作Chrome扩展程序,将*hello*
转换为 hello 并将**hello**
转换为 hello 。但是,由于正则表达式使**hello**
与*hello*
重叠,因此将粗体转换为斜体。我怎么能阻止它?
答案 0 :(得分:2)
执行此操作时的关键是将\*\*([^*]*)\*\*
替换为<b>\1</b>
,然后将\*([^*]*)\*
替换为<i>\1</i>
,或强/ em,css样式,无论你实际用什么来改变字体。
要覆盖嵌套在粗体标签中的i(反之则不是问题),您可以将其用于加粗正则表达式:\*\*([^*]*(\*[^*]*\*[^*]*))\*\*
答案 1 :(得分:0)
答案 2 :(得分:0)
“如果它包含”,则不需要正则表达式;试试这个:
var contains = "**hello**".indexOf("**")>=0;
// 'contains' is true if '**' exists in the string.