我有正则表达式文本替换搜索 /\*\[(.*?)\]\*/ig
模式并将其替换为 '<span style="font-size: 14px;">$1</span>'
. 这适用于简单的javascript replace 函数 .
text = text.replace(/\*\[(.*?)\]\*/ig, '<span style="font-size: 14px;">$1</span>');
但是,我想知道模式是否在句子内,并相应地设置字体大小 .
情景句子1:
This is a text with the *[pattern]* inside the sentence.
这里 *[pattern]*
应该替换为 '<span style="font-size: 14px;">$1</span>'
. 请注意,字体大小为14px,因为模式位于句子内 . 以下情况也是如此:
*[pattern]* in the beginning.
要么
End with a *[pattern]*
但是在以下情况下, patterns 不是't in sentences, I want the font size to be bigger, let' s表示30px . 这适用于以下情况:
*[pattern]*
要么
Text and then the pattern in the new line
*[pattern]*
要么
*[pattern]*
这里第3个用空格表示但没有其他字 .
基本上,如果模式与句子隔离,我希望它具有更大的字体大小 . 有什么建议?
2 回答
您可以使用这样的前瞻:
对于“内部”句子的模式 . 同样的,
对于“外部”的 .
http://jsfiddle.net/RCD83/
使用单个正则表达式可以轻松实现此目的 . 我们将使用捕获组 .
不要让长度吓到你:这只是模式,周围有两个
(?:non-capturing groups)
捕获组1是
*[pattern]*
之前的部分,当它包含的不仅仅是空格或制表符时 .捕获组2是
*[pattern]*
之后的部分,当它包含的不仅仅是空格或制表符时 .在此demo for the regex中,查看右下方窗格中的捕获组 .
How to use it?
在替换lambda中,只测试第1组和第2组的长度 . 如果它大于零,则进行一种替换 . 否则,做另一个 .
我不会为你编写代码,但这里是替换lambda的样子: