【问题标题】:How do I validate a regular expression in JavaScript using Ruby's rules?如何使用 Ruby 的规则验证 JavaScript 中的正则表达式?
【发布时间】:2012-01-19 09:08:20
【问题描述】:

我的数据库中有一些正则表达式,然后在 Ruby 中实例化如下:

rx = Regexp.new(rx_string)

我想在使用 JavaScript 将其提交到我的 Rails 服务器的表单中验证正则表达式,以显示红色边框,以便在稍后提交和使用时,它不会在 Ruby 中引发异常。

有没有一种简单的方法可以将 Ruby 的正则表达式引擎的定义提供给 JavaScript 脚本,该脚本将得出正则表达式在 Ruby 中是否有效的真假?

【问题讨论】:

    标签: javascript ruby regex


    【解决方案1】:

    Ruby 的正则表达式语法和 JavaScript 的区别可以在这里找到:Differences between Ruby 1.9 and Javascript regexp

    我建议获取输入字符串,删除所有 Ruby 功能(例如 (?#comments...))并测试它是否是 JavaScript 中的有效正则表达式:

    try {
      RegExp(input); valid = true;
    } catch(e) {
      valid = false;
    }
    

    从输入字符串中删除所有 Ruby 功能将是一个棘手的问题。

    如果手头没有一些超长的 ruby​​-regex-validating-regexp,我想不出更简单的方法。

    【讨论】:

    • 两个引擎之间的差异似乎很小,我想我会尝试在 JavaScript 中解析它。
    【解决方案2】:

    不,这是不可能的(在单个正则表达式中),因为您可以在模式中编写几乎所有内容及其有效内容,并且您可以随意嵌套表达式。

    当然可以编写一个解析正则表达式的解析器,但我很确定你不想这样做。

    这里有人问过类似的问题:Regexp that matches valid regexps,答案来自RegexBuddy的作者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多