我在自定义文本编辑器中使用正则表达式来有效地将某些模块(断言和加密)列入白名单。我接近我需要的东西,但还不够。在这里:
/require\s*\(\s*'(?!(\bassert\b|\bcrypto\b)).*'\s*\)/
我希望正则表达式匹配任何包含 require('foo');
的行,其中 foo 是除“assert”或“crypto”之外的任何内容。我失败的情况是 require('assert');
与我的正则表达式不匹配但是 require('assert');
被正确匹配。
最佳答案
如果您不想在 '
之间匹配 assert
或 crypto
,您可以更改 lookahead 以准确断言。您可以省略与 '
之后的单词匹配的单词边界。
如果后面的内容应该匹配到 '
第一次出现,您可以使用否定字符类 [^'\r\n]*
来匹配任何字符,除了' 或换行符。
require\s*\(\s*'(?!(assert|crypto)')[^'\r\n]*'\s*\)
^
关于regex - 匹配需要模块的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57227103/