正则表达式 a 或 b

5
我该如何创建一个正则表达式,只匹配r.js或build.js,而不匹配router.js(例如)?
我创建了这个:/^r.js$|^build.js$/,但我感觉可以去掉^和$。如果我去掉它们,router.js也会被匹配。

为什么你想要移除 ^$ - Kenneth K.
我正在寻找一种方法来让它看起来更好,如果有的话。 - Naor
1个回答

8

尝试:

/^(r|build)\.js$/

应该转义'.'。如果删除^,则会匹配到router.js, 如果删除$,则会匹配到r.jsx。所以它们是必要的。

从技术上讲,如果你真的是指一个点,转义点是一个好习惯,但由于点可以匹配任何字符,它仍然会匹配——但它可能会匹配更多的内容。 - Kenneth K.
1
@KennethK。从技术上讲,不转义点是不好的做法,是错误的。实际上,差异有时微不足道。如果正则表达式接受太多或太少,那么它在技术上是不正确的。 - femtoRgon
@femtoRgon 同意。当我说“良好的实践”时,我更倾向于字符的实用性。如果我在文本编辑器中搜索某个字符串,并且我知道格式为build*js的字符串只会是build.js,那么使用转义或未转义的点都无关紧要。然而,如果我正在使用该模式来验证用户输入,则使用哪种模式肯定很重要。这回到了我的“但它可以匹配比预期更多”的评论和你的“差异有时微不足道”的评论。 - Kenneth K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接