How to validate whether a regex itself is valid or not?
在JS中,是否有一个regex来检查给定的regex本身是否有效?
- 这么说,就…编译regex吧。
- 如果正则表达式语法不正确,您将从解析器或regexp构造函数中得到错误。
- 为什么不直接用try..catch。
- @vlaz我也试过这个答案,但它似乎对javascript无效。
- 实际上,我建议从一个像regex101这样的工具开始,它可以是一个很好的沙盒来测试东西。
- @vlaz你的重复问题链接会导致一般的regex问题,而不是javascript问题。
- @弗拉基米尔科夫帕克的第二大投票答案仍然是相关的-只是尝试启动一个regex,看看是否有问题。最有投票权(并且被接受)的答案是一个很好的演示为什么您不想用regex验证regex。它太复杂了,很难维护。通过复制/粘贴它在JS中不起作用,这只是一个非常实用的例子。如果你愿意的话,你可以改变它——在同一个答案中有关于如何改变的建议。也许您在JS中有足够的regex语法来验证regex,但是,还是要这样做吗?
- "VLDimrkkopkk和我现在看到的是,你自己的答案和第二个答案没有太大的不同。您使用的EDCOX1是3。
- @是的,是的。我喜欢从你的链接中接受答案!但我担心的是,OP可能会困惑为什么JS相关的问题与非JS相关的问题重复…
你可以把你的代码打包成EDCOX1×0块,像这样:
1 2 3 4 5
| try {
re = new RegExp(/(.*/); // or re = /(.*/;
} catch (err) {
console.log("ERR:", err);
} |
结果:
1
| ERR: SyntaxError: Invalid regular expression: /(.*/: Unterminated group |
- 你的new RegExp有点毫无意义,除非你要传递一个字符串。如果只做一件事情,我也会做同样的事情。
- "基思,是的,完全同意!但我决定使用这个,因为它感觉必须从外部世界提供regex。