我正在创建自己的降价编辑器,它像粗体溢出一样粗体和斜体:
// **bold**
Text = Text.replace(new RegExp("\\*\\*(.+?)\\*\\*", "g"), '<strong>$1</strong>');
// *italic*
Text = Text.replace(new RegExp("\\*(.+?)\\*", "g"), '<em>$1</em>');
现在的问题是,如果有人希望在其文本中包含一系列asterix,请执行以下操作:
如果你想做A * B * C那么......
这将是:
B C
如果asterix之后没有触及空格字符,那么只有asterix才能正常工作。例如:
** Bold ** = not bold
**Bold** = bolded
* Italic * = not italic
*Italic* = italics
所以我尝试添加[^ ]
以使其匹配非空格字符,这有点儿错误:
// **bold**
Text = Text.replace(new RegExp("\\*\\*(.+?)\\*\\*", "g"), '<strong>$1</strong>');
// *italic*
Text = Text.replace(new RegExp("\\*[^ ](.+?)[^ ]\\*", "g"), '<em>$1</em>');
这似乎从1美元的开头和结尾剥离了一个角色,但除此之外它还有效。如何修改我的正则表达式,这样只有当包含在其中的文本没有被任何空格填充时,才会激活粗体和斜体?
// **bold**
Text = Text.replace(new RegExp("\\*\\*([^ ](.+?)[^ ])\\*\\*", "g"), '<strong>$1</strong>');
// *italic*
Text = Text.replace(new RegExp("\\*([^ ](.+?)[^ ])\\*", "g"), '<em>$1</em>');
但测试用例:
this ** shouldnt be bold ** ewfwef
呈现为
这* 不应该是粗体 * ewfwef
答案 0 :(得分:2)
将字符类放在捕获组中:
([^ ].+?[^ ])
或稍短(并考虑所有空格):
(\S.+?\S)