我想使用正则表达式将所有字符串包装在<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];
答案 0 :(得分:0)
你的正则表达式的第二部分(在管道之后)(\{\{.*?\}\})
匹配{{}}之间的所有内容,无论它是否在跨度之间。您需要将它包装在不匹配的跨度正则表达式条件之间。
正则表达式必须是/^(?!<span class=\"myclass\"\>).*(\{\{.*?\}\}).*(?!<\/span>)$/g
:
(\{\{.*?\}\})
会选择{{}}之间的所有内容,但它会封装在执行作业的范围的负前瞻之间您可以在此处进行测试:https://regex101.com/r/rY2cS4/5