Javascript regexp在{{}}之间使用字符串,但不包括<span>中包含的字符串

时间:2016-03-18 14:46:43

标签: javascript regex regex-negation

我想使用正则表达式将所有字符串包装在<span class="myclass">{{ }}</span>之间,而不是<span class="myclass">{{ }}</span>之间的字符串。

我想我需要删除text = text.replace(/(!\<span class=\"myclass\"\>.*?<\/span>)|(\{\{.*?\}\})/g, '<span class="myclass">$1</span>'); 但是当我尝试使用它时:

<span class="myclass">{{ }}</span>

它还需要<span class="myclass">{{$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$}}</span> <p>{{$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$}}</p> <p>{{any text}}</p> 个元素。 我做错了什么?

文字示例:

UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
vs.frame = self.view.bounds;
[self.view addSubview:vs];

1 个答案:

答案 0 :(得分:0)

你的正则表达式的第二部分(在管道之后)(\{\{.*?\}\})匹配{{}}之间的所有内容,无论它是否在跨度之间。您需要将它包装在不匹配的跨度正则表达式条件之间。

正则表达式必须是/^(?!<span class=\"myclass\"\>).*(\{\{.*?\}\}).*(?!<\/span>)$/g

  • (\{\{.*?\}\})会选择{{}}之间的所有内容,但它会封装在执行作业的范围的负前瞻之间

您可以在此处进行测试:https://regex101.com/r/rY2cS4/5