首页 > 解决方案 > 可选的捕获组直到行尾

问题描述

给定以下字符串

我有以下正则表达式

^\/\/\s(prevent\s?eval\s|eval\s?prevent)\s?([^\n]*)$

我想要做的是匹配以下内容:

// preventeval
hello world

[预防评估]

// preventeval meow
hello world

[preventEval,喵]

https://regexr.com/529p7

标签: javascriptregex

解决方案


\s匹配任何空白字符,换行符空白字符,所以它被它匹配(然后整个下一行被匹配([^\n]*))。

可选地匹配一个纯空格(并在第一个交替中\s从末尾删除)。prevent\s?eval\s

您也可以使用.*而不是[^\n]*,您可能无论如何都不想匹配换行符:

^\/\/\s(prevent\s?eval|eval\s?prevent) ?(.*)$

听起来您可能不希望任何s 匹配换行符,\s在这种情况下,将它们全部替换为纯空格:

^\/\/ (prevent ?eval|eval ?prevent) ?(.*)$

推荐阅读