ruby - 匹配不以 test.js 结尾但以 .js 结尾的文件的正则表达式

标签 ruby regex regex-negation

以下是要匹配的示例字符串列表:

  • 这些应该匹配:

    hello.js
    test.hello.js
    test.js.js
    test.js.hello.js
    test.js.test.js.test.js.dss.js
    test.js.dss.js
    test.js.js.js.js.dummy.js
    
  • 这些不应匹配:

    fun.css
    test.js
    fun.test.js
    test.test.js
    test.js.test.js
    hell.cs
    test.test.js
    

最佳答案

一个简单的选择是使用否定前瞻来检查该行是否以 .test.js 结尾:

^(?!.*\.test\.js$).*\.js$

这个不包括 test.js,这是一种特殊情况,但您可以使用 ^(?!(?:^|.*\.)test\. js$).*\.js$ 来绕过它(或其他类似的选项)。

工作示例:http://www.rubular.com/r/UVvRZMcnjl

如果您的风格支持lookbehinds(JavaScript和旧的Ruby不支持,但Ruby 1.9.2支持),您可以使用:

^.*(?<!^test|\.test)\.js$

工作示例:http://www.rubular.com/r/lBCphNYEeS

关于ruby - 匹配不以 test.js 结尾但以 .js 结尾的文件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757406/

相关文章:

javascript - 我需要在任意位置匹配不包含关键字的字符串

php - 请求 - 从 php 服务器到 ruby​​ on rails 服务器的响应。 CSRF token 问题

javascript - 单击提交按钮时按索引迭代数组 Ruby on Rails

ruby - Rabin Karp Rolling Hash 生成的哈希未反射(reflect)在文本上

ruby-on-rails - 在 Heroku 中将 Postgresql 连接到 Rails

javascript - 如何匹配这个正则表达式或空?

java - 获取元素属性值

javascript - 将这些字符中的任何一个替换为空 : ''

java - 您将如何使用正则表达式来忽略包含特定子字符串的字符串?

正则表达式删除嵌套的括号