【发布时间】:2021-07-16 15:10:07
【问题描述】:
我正在尝试编写一个匹配用户输入的正则表达式,它将使用 markdown 转换为斜体格式。
在字符串中,我需要找到以下模式:星号后跟任何类型的非空白字符,并以任何类型的非空白字符后跟星号结束。
所以基本上:substring *substring substring substring* substring 应该吐出*substring substring substring*。
到目前为止,我只想到了/\*(?:(?!\*).)+\*/,它匹配两个星号之间的所有内容,但它没有考虑星号之间的子字符串是以空格开头还是以空格结尾 - 这是不应该的。
感谢您的意见! :)
【问题讨论】:
-
试试
/\*(?!\s).*?\*(?<!\s\*)/ -
@isaactfa 但是
\S匹配一个*字符,而/\*\S.*?\S\*/不能匹配一个星号之间只有一个字符的*.*字符串。 -
@WiktorStribiżew 好点!真的应该是
/\*[^\s\*](?:.*?[^\s\*])?\*/。 -
是的,或者
/\*(?![\s*]).*?\*(?<![\s*]\*)/然后 -
\*[^*\s](?:[^*]*[^*\s])?\*会工作