正则表达式像一个一样处理多个匹配项,如何修复
Regular expression handle multiple matches like one, how to fix?
我有一个正则表达式和一个字符串,其中包含此正则表达式的一些匹配项。我的正则表达式处理所有这些匹配,就像它只是一个大匹配一样(当然我不想要这样的行为),让我给你看一个例子:
我的测试字符串(抱歉涂鸦,但这没关系):
sdfsd -dsf- sdfsdfssdfsfdsfsd -sdfsdf-
我在JS代码中的正则表达式:
view.replace(/('-(.+)'-)/g, '<span style="background-color:yellow">$1</span>');
我的结果:
sdfsd<span style="background-color:yellow">-dsf- sdfsdfssdfsfdsfsd -sdfsdf-</span>
如您所见,"-"中的每个字符串都必须包含在 span 中,但只有一个 span。我该如何解决这个问题?(老实说,我不想更改我的 (.+) 正则表达式部分,我认为这可能是一个问题,但如果没有其他方法可以做到这一点,请告诉我)。
换句话说,结果必须是:
sdfsd<span style="background-color:yellow">-dsf-</span> sdfsdfssdfsfdsfsd <span style="background-color:yellow">-sdfsdf-</span>
请随时在评论中问我,并感谢您的帮助。
老实说,我不想更改我的 (.+) 正则表达式部分,我认为这可能是一个问题
为什么不呢,它实际上是问题的根源,您可以尝试以下可以工作的正则表达式:
/('-([^-]+)'-)/g
如果您认为破折号-
可以出现在-
和-
之间,那么您可以使用效率较低的:
/('-(.+?)'-)/g
+?
会导致延迟匹配,或者换句话说,在匹配初始-
之后,.+?
匹配单个字符,然后它将控制权移动到以下尝试匹配破折号的-
,如果不能,则.+?
从输入中读取(使用)另一个字符,依此类推,直到下一个-
能够匹配。
你可以试试:
view.replace(/-([^-]+)-/g, '<span style="background-color:yellow">$1</span>');
相关文章:
- 我如何修复包含在captcha的addthis中的错误
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 自动修复”;语句前缺少分号“;
- 滚动以修复向上滚动的问题
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- Datatables查询url字符串:需要regex来修复url解析
- 修复选择菜单时的背景图像
- 修复弹出框并使背景滚动
- 修复了使用Jquery的列(表头问题)
- Javascript-修复搜索系统
- 在SVG地图上添加水的渐变,就像在谷歌地图(PHP/JS)中一样
- 如何像模糊图像一样模糊iframe
- FullCalendar:事件发生时阻止重叠.标题是一样的
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- “createImageData()”和“new ImageData(()”有何不同
- 如何修复:当javascript更改DOM时,iOS会删除CSS文件
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 我正在创建一个聊天,但每次我发送消息时,它都不会让我再发送另一条消息,就像表格一样;不起作用
- 在JavaScript中,如何修复元素显示和变量创建之间的初始差异
- 正则表达式像一个一样处理多个匹配项,如何修复